kafka的集群啟動


在啟動kafka之前要先啟動zookeeper

每台的broker.id 不同
listeners=PLAINTEXT://192.168.1.136:9092
log.dirs=/var/msb/kafka-logs
zookeeper.connect=192.168.1.136:2181,192.168.1.137:2181,192.168.1.138:2181192.168.1.139:2181/kafka
不要再zookeeper根路徑創建不然文件太亂
配置kafka的環境變量
vi /etc/profile
最后添加
export KAFKA_HOME=/usr/local/kafka_2.11-2.2.0
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin
source /etc/profile


cd $KAFKA_HOME cd
/config kafka-server-start.sh ./server.properties

如果出錯看下/var/msb/kafka 之前的數據是否需要刪除

 

 

在zkCli.sh命令中我們可以窺探kafka中的一些元數據
controller
brokers
ids
topics
seqid
在node02上創建topic
創建topic kafka
-topics.sh --zookeeper node02:2181,node03:2181/kafka --create --topic oooo --partitions 2 --replication-factor 2
查看top 列表
kafka-topics.sh --zookeeper node02:2181,node03:2181/kafka --list
查看top詳細描述信息
kafka-topics.sh --zookeeper node02:2181,node03:2181/kafka --describe --topic oooo
在node03上創建消費者
kafka-console-consumer.sh --bootstrap-server node02:9092,node03:9092 --topic oooo --group msb
在node04上創建生產者  可以只寫一個消費者在list里
kafka-console-producer.sh --broker-list node03:9092 --topic oooo
再在node03上創建一個消費者
kafka-console-consumer.sh --bootstrap-server node02:9092,node03:9092 --topic oooo --group msb
假如上述代碼 --group msb 不寫 則消息進入默認分組 也就是這兩個分組會同時收到topic的消息,
但是把他們規定到一個組中的時候,是輪詢消費
當消費者多於分區 時 不會將消息分發給多出來的那個消費者
查看當前有哪些分組
kafka-consumer-groups.sh --bootstrap-server node02:9092 --list
查看組里的詳細信息
kafka-consumer-groups.sh --bootstrap-server node02:9092 --describe --group msb

 

TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST            CLIENT-ID
oooo            1          10              10              0               consumer-1-c2d085fd-939d-43ac-8e4a-1581571043dd /192.168.1.138  consumer-1
oooo            0          11              11              0               consumer-1-b0cbdb77-fc24-46cc-ac06-af16363babab /192.168.1.138

CURRENT-OFFSET 消費的進度
LOG-END-OFFSET 消費的程度
 

 

消息有順序性
帶k v 相同的key 去到一個分區里,
broker或保證producer發送消息的順序
一個分區可能會有不同的key 且不同的key是交叉的 相同的key在一個分區里沒有排列在一起
但是是有順序的

 

 

 

 

 

 

 

 

 

 

 

 

怎么使用多線程解決重復消費和數據丟失的問題
假如 A1 提交失敗了 B1提交成功了 offset更新A1 還是B1
從A1的offset開始更新 B1重復消費
提交B1的offset下次處理是A2 A1數據丟失

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM