Kafka集羣搭建筆記

緊接着上一篇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
這文件挺長,但是已經經受了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 解釋網上有一篇:
https://www.jianshu.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接受消息,發現都能接收到,數據可以同步,證明集羣搭建成功!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章