Kafka 0.10.0版本对加入了 Kafka Streams 流处理系统,本文主要总结了Kafka 0.10在集群搭建、高可用性、新API方面的相关过程和细节
Zookeeper和Kafka的运行都需要Java环境,所以先安装JRE,Kafka默认使用G1垃圾回收器,如果不更改垃圾回收器,官方推荐使用 7u51以上版本的JRE。如果你使用老版本的JRE,需要更改Kafka的启动脚本,指定G1以外的垃圾回收器。
Java环境的安装过程在此不赘述了。
2, Zookeeper集群搭建
Kafka依赖Zookeeper管理自身集群(Broker、Offset、Producer、Consumer等),所以先要安装 Zookeeper。自然,为了达到高可用的目的,Zookeeper自身也不能是单点,接下来就介绍如何搭建一个最小的Zookeeper集群(3个 zk节点)
此处选用Zookeeper的版本是3.4.8
3, Kafka集群搭建
此例中,我们会安装配置一个有两个Broker组成的Kafka集群,并在其上创建一个两个分区的Topic
本例中使用Kafka最新版本0.10.0.0
首先解压
- tar -xzvf kafka_2.11-0.10.0.0.tgz
编辑config/server.properties文件,下面列出关键的参数(其他参数默认即可)
#kafka集群中id为0的broker
broker.id=0
#这里和0.9版本有区别,很不幸踩了个坑,每个broker的host_name一定要加上;
listeners=PLAINTEXT://192.168.80.100:9092
#kafka的topic以及数据文件存放位置
log.dirs=/home/mqtest/kafka_2.11-0.10.0.0/kafka-logs
#kafka连接的zk集群地址,这里我们创建一个path用以区分不同的版本
zookeeper.connect=192.168.80.100:2181,192.168.80.101:2181,192.168.80.102:2181/kafka_0.10
配置项的详细说明请见官方文档:http://kafka.apache.org/documentation.html#brokerconfigs
接下来,我们在另一台主机也完成Kafka的安装和配置,然后在两台主机上分别启动Kafka:
- bin/kafka-server-start.sh -daemon config/server.properties &
创建一个名为test,拥有两个分区,两个副本的Topic:
bin/kafka-topics.sh --create --zookeeper 192.168.80.100:2181,192.168.80.101:2181,192.168.80.102:2181/kafka_0.10 --replication-factor 2 --partitions 2 --topic CRM
创建完成后,使用如下命令查看Topic状态:
- bin/kafka-topics.sh --describe --zookeeper
--topic CRM192.168.80.100:2181,192.168.80.101:2181,192.168.80.102:2181/kafka_0.10
输出:
Topic:CRM PartitionCount:2 ReplicationFactor:2 Configs:
Topic: CRM Partition: 0 Leader: 1 Replicas: 1,0 Isr: 0,1
Topic: CRM Partition: 1 Leader: 0 Replicas: 0,1 Isr: 0,1
解读:CRM这个topic,当前有2个分区,分别为0和1,分区0的Leader是1(这个1是broker.id),分区0有两个 Replica(副本),分别是1和0,这两个副本中,Isr(In-sync)的是0和1。分区2的Leader是0,也有两个Replica,同样也 是两个replica都是in-sync状态
至此,Kafka 0.10集群的搭建工作就完成了,下面我们将介绍新的Java API的使用,以及集群高可用性的验证测试。
(未完待续,下班了。。)