Kafka实战-Kafka Cluster
1.概述
在《Kafka实战-入门》一篇中,为大家介绍了Kafka的相关背景、原理架构以及一些关键知识点,本篇博客为大家来赘述一下Kafka Cluster的相关内容,下面是今天为大家分享的目录:
- 基础软件的准备
- Kafka Cluster的部署
- Send Messages
- HA特性
下面开始今天的内容分享。
2.基础软件的准备
2.1 ZK
由于Kafka Cluster需要依赖ZooKeeper(后面简称ZK)集群来协同管理,所以这里我们需要事先搭建好ZK集群,关于ZK的集群搭建,大家可以参考我写的《配置高可用的Hadoop平台》,这篇文章中我介绍了如何去搭建ZK,这里就不多赘述,本篇博客为大家介绍如何去搭建Kafka Cluster。
2.2 Kafka
由于Kafka已经贡献到Apache基金会了,我们可以到Apache的官方网站上去下载Kafka的基础安装包,下载地址如下所示:
Kafka安装包 [下载地址]
Kafka源代码 [下载地址]
这里,我们直接使用官方编译好的安装包进行Kafka Cluster的安装部署。下面我们来开始Kafka Cluster的搭建部署。
3.Kafka Cluster的部署
首先,我们将下载好的Kafka基础安装包解压,命令如下所示:
- 解压Kafka
[hadoop@dn1 ~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
- 进入到Kafka解压目录
[hadoop@dn1 ~]$ cd kafka_2.9.1-0.8.2.1
- 配置环境变量
[hadoop@dn1 ~]$ vi /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.-0.8.2.1
export PATH=$PATH:$KAFKA_HOME/bin
- 配置Kafka的zookeeper.properties
# the directory where the snapshot is stored.
dataDir=/home/hadoop/data/zk
# the port at which the clients will connect
clientPort=
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=
- 配置server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=
注:这里配置broker的时候,每台机器上的broker保证唯一,从0开始。如:在另外2台机器上分别配置broker.id=1,broker.id=2
- 配置producer.properties
# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
metadata.broker.list=dn1:,dn2:,dn3:
- 配置consumer.properties
# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
zookeeper.connect=dn1:,dn2:,dn3:
至此,Kafka Cluster部署完成。
4.Send Messages
4.1启动
首先,在启动Kafka集群服务之前,确保我们的ZK集群已启动,下面我们启动Kafka集群服务。启动命令如下所示:
[hadoop@dn1 kafka_2.-0.8.2.1]$ kafka-server-start.sh config/server.properties &
注:其他2个节点参照上述方式启动。
另外,启动其他节点的时候,在最先开始启动的节点会显示其它节点加入的信息记录,如下图所示:
4.2验证启动进程
[hadoop@dn1 kafka_2.-0.8.2.1]$ jps
QuorumPeerMain
Kafka
Jps
4.3创建Topic
在服务启动后,我们开始创建一个Topic,命令如下所示:
[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:,dn2:,dn3: --topic test1 --replication-factor --partitions --create
然后,我们查看该Topic的相关信息,命令如下所示:
[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:,dn2:,dn3: --topic test1 --describe
预览信息如下图所示:
下面解释一下这些输出。第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。
- Leader:负责处理消息的读和写,Leader是从所有节点中随机选择的。
- Replicas:列出了所有的副本节点,不管节点是否在服务中。
- Isr:是正在服务中的节点
4.4生产消息
下面我们使用kafka的Producer生产一些消息,然后让Kafka的Consumer去消费,命令如下所示:
[hadoop@dn1 ]$ kafka-console-producer.sh --broker-list dn1:,dn2:,dn3: --topic test1
4.4消费消息
接着,我们在另外一个节点启动消费进程,来消费这些消息,命令如下所示:
[hadoop@dn2 ]$ kafka-console-consumer.sh --zookeeper dn1:,dn2:,dn3: --from-beginning --topic test1
消费记录如下图所示:
5.HA特性
这里,从上面的截图信息可以看出,在DN1节点上Kafka服务上Lead,我们先将DN1节点的Kafka服务kill掉,命令如下:
[hadoop@dn1 config]$ jps
QuorumPeerMain
Jps
Kafka
[hadoop@dn1 config]$ kill -
然后,其他节点立马选举出了新的Leader,如下图所示:
下面,我们来测试消息的生产和消费,如下图所示:
- 生产消息
- 消费消息
通过测试,可以发现,Kafka的HA特性还是不错的,拥有不错的容错机制。
6.总结
这里,在部署Kafka Cluster的时候,有些地方需要我们注意,比如:在我们启动Kafka集群的时候,确保ZK集群启动,另外,在配置Kafka配置文件信息时,确保ZK的集群信息配置到相应的配置文件中,总体来说,配置还算较为简单,需要在部署的时候,仔细配置各个文件即可。
7.结束语
这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
Kafka实战-Kafka Cluster的更多相关文章
- Kafka实战-Storm Cluster
1.概述 在<Kafka实战-实时日志统计流程>一文中,谈到了Storm的相关问题,在完成实时日志统计时,我们需要用到Storm去消费Kafka Cluster中的数据,所以,这里我单独给 ...
- 《Apache kafka实战》读书笔记-kafka集群监控工具
<Apache kafka实战>读书笔记-kafka集群监控工具 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如官网所述,Kafka使用基于yammer metric ...
- 《Apache kafka实战》读书笔记-管理Kafka集群安全之ACL篇
<Apache kafka实战>读书笔记-管理Kafka集群安全之ACL篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家能看到这篇博客的小伙伴,估计你对kaf ...
- Kafka实战-数据持久化
1.概述 经过前面Kafka实战系列的学习,我们通过学习<Kafka实战-入门>了解Kafka的应用场景和基本原理,<Kafka实战-Kafka Cluster>一文给大家分享 ...
- Kafka实战-Kafka到Storm
1.概述 在<Kafka实战-Flume到Kafka>一文中给大家分享了Kafka的数据源生产,今天为大家介绍如何去实时消费Kafka中的数据.这里使用实时计算的模型——Storm.下面是 ...
- Kafka实战-实时日志统计流程
1.概述 在<Kafka实战-简单示例>一文中给大家介绍来Kafka的简单示例,演示了如何编写Kafka的代码去生产数据和消费数据,今天给大家介绍如何去整合一个完整的项目,本篇博客我打算为 ...
- Kafka实战-简单示例
1.概述 上一篇博客<Kafka实战-Kafka Cluster>中,为大家介绍了Kafka集群的安装部署,以及对Kafka集群Producer/Consumer.HA等做了相关测试,今天 ...
- kafka实战教程(python操作kafka),kafka配置文件详解
kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ...
- Kafka实战-Flume到Kafka
1.概述 前面给大家介绍了整个Kafka项目的开发流程,今天给大家分享Kafka如何获取数据源,即Kafka生产数据.下面是今天要分享的目录: 数据来源 Flume到Kafka 数据源加载 预览 下面 ...
随机推荐
- 自定义Xadmin
1.启动Xadmin INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.content ...
- 除了Office和wps,还有什么办公软件比较好用?
一.不能没有的pdf软件 以下介绍的是PDF(Portable Document Format)常用的阅读.编撰以及其他工具.阅读工具1.Adobe AcrobatReader中文版应用平台:Wind ...
- BZOJ4381 : [POI2015]Odwiedziny / Luogu3591[POI2015]ODW - 分块+树剖
Solution 在步伐$pace$比较小的时候, 我们发现用前缀和直接维护会很快 而在$pace$比较大的时候, 则暴力往上跳会最优 设$blo= \sqrt{N}$ 若$pace<=blo$ ...
- [模板]LCA
洛谷P3379 注意:不能与LCA搞混(打久了就会发现两个还是有很大区别的) 位运算一定要加括号! for循环从0到logn还是从logn到0看当前的状态更适合哪种 第53行预处理一定要注意!(因为没 ...
- NCUAP 利用java自带方法实现导入excel取数据
final JComponent parent = getModel().getContext().getEntranceUI(); JFileChooser chooser = new JFileC ...
- Python中的urllib
urllib提供了一系列URL的功能. Get urllib的request模块可以非常方便的抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP响应: 例如,对豆瓣的一个URLht ...
- tcp、ip、http
tcp是传输层协议,ip是网络层协议,http是应用层协议,简单说就是tcp是传输数据,而http是封装数据. rpc与http的区别是项目大的话,接口间调用变多的话,采用rpc的话,不用像http那 ...
- Chapter3_操作符_逻辑操作符
逻辑操作符与(&&)或(||)非(^)能够对布尔类型的数据类型进行操作,并且生成布尔值,和关系操作符的产生的数据类型是一样的.需要注意的不多,有以下几点: (1)在需要使用string ...
- FastJSON基础
对象的类型 json文本 json数组 json对象 java对象 类型的转换 json文本 转 json对象 JSON.parseObject(str) json文本 ...
- PHP 百万级数据导出方案(多 CSV 文件压缩)
ps:来源 :https://laravel-china.org/articles/15944/php-million-level-data-export-scheme-multi-csv-file- ...