一、安装
kafka可以通过官网下载:https://kafka.apache.org/downloads
kafka根据Scala版本不同,又分为多个版本,我不需要使用Scala,所以就下载官方推荐版本kafka_2.12-2.4.0.tgz。
使用tar -xzvf kafka_2.12-2.4.0.tgz 解压
为了使用方便,可以创建软链接kafka0
二、Zookeeper配置
当前下载的kafka程序里自带Zookeeper,可以直接使用其自带的Zookeeper建立集群,也可以单独使用Zookeeper安装文件建立集群。
1. 单独使用Zookeeper安装文件建立集群
Zookeeper的安装及配置可以参考另一篇博客,里面有详细介绍
https://www.cnblogs.com/zhaoshizi/p/12105143.html
2. 直接使用其自带的Zookeeper建立集群
kafka自带的Zookeeper程序脚本与配置文件名与原生Zookeeper稍有不同。
kafka自带的Zookeeper程序使用bin/zookeeper-server-start.sh,以及bin/zookeeper-server-stop.sh来启动和停止Zookeeper。
而Zookeeper的配制文件是config/zookeeper.properties,可以修改其中的参数
(1) 启动Zookeeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
加-daemon参数,可以在后台启动Zookeeper,输出的信息在保存在执行目录的logs/zookeeper.out文件中。
对于小内存的服务器,启动时有可能会出现如下错误
os::commit_memory(0x00000000e0000000, 536870912, 0) failed; error='Not enough space' (errno=12)
可以通过修改bin/zookeeper-server-start.sh中的参数,来减少内存的使用,将下图中的-Xmx512M -Xms512M改小。
(2)关闭Zookeeper
bin/zookeeper-server-stop.sh -daemon config/zookeeper.properties
三、kafka配置
kafka的配置文件在config/server.properties文件中,主要修改参数如下,更具体的参数说明以后再整理下。
broker.id是kafka broker的编号,集群里每个broker的id需不同。我是从0开始。
listeners是监听地址,需要提供外网服务的话,要设置本地的IP地址
log.dirs是日志目录,需要设置
设置Zookeeper集群地址,我是在同一个服务器上搭建了kafka和Zookeeper,所以填的本地地址
num.partitions 为新建Topic的默认Partition数量,partition数量提升,一定程度上可以提升并发性
内部topic配置
内部__consumer_offsets和__transaction_state两个topic,分组元数据的复制因子,为了保证可用性,在生产上建议设置大于1。
default.replication.factor为kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务,是在自动创建topic时的默认副本数,可以设置为3
因为要创建kafka集群,所以kafka的所有文件都复制两份,配置文件做相应的修改,尤其是brokerid、IP地址和日志目录。分别创建软链接kafka1和kafka2。
四、启动及停止kafka
1. 启动kafka
bin/kafka-server-start.sh -daemon config/server.properties
-daemon 参数会将任务转入后台运行,输出日志信息将写入日志文件,日志文件在执行命令的目录下的logs目录中kafkaServer.out,结尾输同started说明启动成功。
也可以用jps命令,看有没有kafka的进程
2. 停止kafka
bin/kafka-server-stop.sh config/server.properties
五、测试
kafka和Zookeeper已启动完成
1. 创建topic
bin/kafka-topics.sh --create --zookeeper 192.168.202.128:2181 --replication-factor 3 --partitions 3 --topic test
2. 查看主题
bin/kafka-topics.sh --list --zookeeper 192.168.202.128:2181
3. 发送消息
bin/kafka-console-producer.sh --broker-list 192.168.202.128:9094 --topic test
4. 接收消息
bin/kafka-console-consumer.sh --bootstrap-server 192.168.202.128:9092 --topic test --from-beginning
5. 查看特定主题的详细信息
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
从中可以看到,test主题分了三个区,复制因子是3。
6. 删除主题
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test