kafka叢集部署
阿新 • • 發佈:2019-04-10
Kafka 依賴 ZooKeeper,所以需要在 ZooKeeper 的基礎上部署,具體可以參考 zookeeper叢集部署。
一、環境準備
設定主機名,並設定hosts
192.168.4.100 master
192.168.4.21 node
192.168.4.57 node1
關閉Selinux、firewalld並安裝JDK
以上就不一一贅述,直接進入正題。
二、Kafka叢集搭建
2.1 下載解壓
下載安裝包( master 操作) wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.1.1/kafka_2.11-2.1.1.tgz 解壓並挪到 master 節點相應目錄下進行操作 tar xf kafka_2.11-2.1.1.tgz
2.2 配置啟動
進入kafka目錄,建立日誌存放路徑
[root@master kafka_2.11-2.1.1]# mkdir logs
vim config/server.properties
在預設配置下,需要新增 port 、host.name 和 message.max.byte(訊息儲存的最大值),修改 broker.id 、log.dirs 和 zookeeper.connect。
[root@master kafka_2.11-2.1.1]# cat config/server.properties |grep -v ^$ |grep -v ^# broker.id=1 port=9092 host.name=192.168.4.100 num.network.threads=3 num.io.threads=8 socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 log.dirs=/bigdata/kafka_2.11-2.1.1/logs num.partitions=1 num.recovery.threads.per.data.dir=1 offsets.topic.replication.factor=1 transaction.state.log.replication.factor=1 transaction.state.log.min.isr=1 log.retention.hours=168 message.max.byte=5242880 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 zookeeper.connect=192.168.4.100:2181,192.168.4.21:2181,192.168.4.57:2181 zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms=0
分發到另外兩臺機器
[root@master bigdata]# scp -r kafka_2.11-2.1.1 192.168.4.21:/bigdata/
[root@master bigdata]# scp -r kafka_2.11-2.1.1 192.168.4.57:/bigdata/
修改配置檔案( node 和 node1 上操作)
vi /bigdata/kafka_2.11-2.1.1/config/server.properties 在 node 上, 將 broker.id 設定為 2,host.name 設定為 192.168.4.21 在 node1 上, 將 broker.id 設定為 3,host.name 設定為 192.168.4.57
分別在三臺伺服器上啟動 kafka 應用
[root@master bigdata]# /bigdata/kafka_2.11-2.1.1/bin/kafka-server-start.sh -daemon /bigdata/kafka_2.11-2.1.1/config/server.properties
2.3 測試結果
將 master 作為生產者,node 和 node1 作為消費者
1、在 master 上執行:
建立一個主題 test:一個分割槽,兩個副本
[root@master bigdata]# /bigdata/kafka_2.11-2.1.1/bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 2 --partitions 1 --topic test
Created topic "test".
建立一個生產者(訊息釋出者)
/bigdata/kafka_2.11-2.1.1/bin/kafka-console-producer.sh --broker-list master:9092 --topic test
>
# 此時會進入到新的console(以>開頭)
2、分別在 node 和 node1 上執行
建立一個消費者(訊息訂閱者)
/bigdata/kafka_2.11-2.1.1/bin/kafka-console-consumer.sh --bootstrap-server master:9092 --topic test --from-beginning
#此時也會進入到另外一個console下
再到 master 上的> 下輸入一些字元,然後會同時出現在 node 和 node1 上。
2.4 常用命令
檢視主題
[root@master ~]# /bigdata/kafka_2.11-2.1.1/bin/kafka-topics.sh --list --zookeeper master:2181
__consumer_offsets
test
timewindows
檢視主題詳情
[root@master ~]# /bigdata/kafka_2.11-2.1.1/bin/kafka-topics.sh --describe --zookeeper master:2181 --topic test
Topic:test PartitionCount:1 ReplicationFactor:2 Configs:
Topic: test Partition: 0 Leader: 1 Replicas: 1,3 Isr: 1,3
刪除主題(需設定引數delete.topic.enable=true)
[root@master ~]# /bigdata/kafka_2.11-2.1.1/bin/kafka-topics.sh --zookeeper master:2181 --delete --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
生產者引數檢視
[root@master ~]# /bigdata/kafka_2.11-2.1.1/bin/kafka-console-producer.sh
消費者引數檢視
[root@master ~]# /bigdata/kafka_2.11-2.1.1/bin/kafka-console-consumer.sh