緊接著上一篇Zk集群搭建:https://blog.csdn.net/w635614017/article/details/89960255
這邊直接搭建起來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 解釋網上有一篇:
https://blog.csdn.net/guoyuqi0554/article/details/48630907
關于 default.replication.factor 解釋網上有一篇:
http://www.lxweimin.com/p/082baf0ebce5
關于group.initial.rebalance.delay.ms 解釋網上有一篇:https://www.cnblogs.com/huxi2b/p/6815797.html
都說的很好!
太多了,不一一寫下去了,可以去官方看。基本上都是默認的,這里說一下要改的東西。
# 不多說,自己配,別重復就行
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接受消息,發現都能接收到,數據可以同步,證明集群搭建成功!!!