紧接着上一篇Zk集群搭建:
这边直接搭建起来Kafka集群,环境路径啥的都写上一篇了,可以去查看。
kafka官网:http://kafka.apache.org/ 我下载的版本是:kafka_2.11-2.1.1
1.配置
依然是解压缩到我的目录下 /opt/soft
然后进入到kafka的配置文件里面,vim /opt/soft/kafka_2.11-2.1.1/config/server.properties
这文件挺长,但是已经经受了hive配置文件洗礼的我毫不畏惧
############################# Server Basics #############################
# 机器在集群里面的标识,和zk的myid一个意思
broker.id=0
# kafka对外提供服务的端口,默认是9092
port=9092
# DNS
host.name=192.168.20.3
############################# Socket Server Settings #############################
# borker网络处理的线程数
num.network.threads=3
# borker做I/O处理的线程数
num.io.threads=8
# 发送缓冲区大小:数据要先达到缓冲区,在缓冲区体积达到设置后再发送,性能相关,这边默认了
socket.send.buffer.bytes=102400
# 接收缓冲区大小:主要是缓冲一定量之后,序列化到磁盘,默认了
socket.receive.buffer.bytes=102400
# kafka接收和发送 请求的最大请求数,默认了,这个值不能超过jvm堆栈
socket.request.max.bytes=104857600
############################# Log Basics #############################
# 消息存放的目录,这个目录可以配置为“,”逗号分割的表达式。注意!上面的num.io.threads要大于这个目录的个数,如果配了多个目录,topic消息持久化的位置为:当前以逗号分割的目录中,哪个分区数最少,就放在哪一个,这个可以自定义。
log.dirs=/tmp/kafka-logs
# 默认分区数,一个topic默认1个分区,默认了
num.partitions=1
num.recovery.threads.per.data.dir=1
############################# Internal Topic Settings #############################
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
############################# Log Flush Policy #############################
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
############################# Zookeeper #############################
# 默认消息的最大持久化时间,168小时,是7天
log.retention.hours=168
# topic的分区是以一堆segment文件存储的,这个控制每个segment的大小,会被topic创建时的指定参数覆盖
log.segment.bytes=1073741824
# 文件大小检查的周期时间,是否处罚 log.cleanup.policy中设置的策略
log.retention.check.interval.ms=300000
# 消息体的最大值 5M
message.max.byte=5242880
# 1是不备份。配置为2,表示除了leader节点,对于topic里的每一个partition,都会有一个额外的备份。
default.replication.factor=2
# 默认是1M,取消息,最多取多少,这个容易有坑!
replica.fetch.max.bytes=5242880
############################# Zookeeper #############################
# zk集群地址,逗号分隔
zookeeper.connect=Master:2181,Slave:2181,Slave2:2181
# zk的连接超时时间
zookeeper.connection.timeout.ms=6000
############################# Group Coordinator Settings #############################
# 这个参数的主要效果就是让coordinator推迟空消费组接收到成员加入请求后本应立即开启的rebalance
group.initial.rebalance.delay.ms=0
关于replica.fetch.max.bytes 解释网上有一篇:
关于 default.replication.factor 解释网上有一篇:
https://www.jianshu.com/p/082baf0ebce5关于group.initial.rebalance.delay.ms 解释网上有一篇: 都说的很好!
太多了,不一一写下去了,可以去官方看。基本上都是默认的,这里说一下要改的东西。
# 不多说,自己配,别重复就行
broker.id=0
# 不解释
host.name=Master
# 增加
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
# 设置zookeeper的连接端口
zookeeper.connect=Master:2181,Slave1:2181,Slave2:2181
分别去修改,注意我只是写了Master上的,其他Slave1和Salve2的不同,这里不赘述了。
2.启动
去kafka目录下。
执行指令:nohup bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
当然如果想看日志信息:nohup bin/kafka-server-start.sh config/server.properties &
然后jps
看到kafka证明启动了,我们试一下是否搭建起集群。
3.验证
我们用Master创建一个topic:bin/kafka-topics.sh --create --topic test --zookeeper Master:2181 --partitions 2 --replication-factor 1
解释一下下:
- create是创建
- Zookeeper 是zk集群
- replication-factor 是复制几份,这边1份
- partitions 创建几个分区
- topic 主题的名称
执行之后打印出了:
Created topic "test".
证明成功创建主题了!我们去另外一台机器Slave1
执行bin/kafka-topics.sh --zookeeper Slave1:2181 --list
打印出来 test
去Slave2执行bin/kafka-topics.sh --zookeeper Slave2:2181 --list
也打印出 test
Master也有,那么证明已经搭建成功了!!!
接下来大家可以自己玩指令除了上面的还有:
消费者:bin/kafka-console-consumer.sh --bootstrap-server Master:9092 --topic test
生产者:bin/kafka-console-producer.sh --broker-list Master:9092 --topic test
可以Master开个消费者,然后Slave1和Slave2生产消息。
或者Master当生产者,Slave1和Slave2接受消息,发现都能接收到,数据可以同步,证明集群搭建成功!!!