【導(dǎo)語】2020軍隊(duì)文職計(jì)算機(jī)知識(shí):大數(shù)據(jù)之Kafka集群安裝與測(cè)試已發(fā)布,為助力各位考生做好2020年軍隊(duì)文職招聘考試準(zhǔn)備,紅師軍隊(duì)文職考試網(wǎng)提供了軍隊(duì)文職專業(yè)科目和綜合輔導(dǎo)等內(nèi)容,祝大家考試順利。
一、 安裝JDK &配置JAVA_HOME
JDK安裝和JAVA_HOME配置,大家都應(yīng)該很熟悉了,我們?cè)诖瞬辉儋樖觥?/p>
二、 安裝Zookeeper
參照Zookeeper官網(wǎng)搭建一個(gè)ZK集群, 并啟動(dòng)ZK集群。
三、 解壓Kafka安裝包
1. 修改配置文件config/server.properties
vi server.properties
broker.id=0 //集群中唯一id,依次增長(zhǎng):0、1、2、3、4
log.dirs=/root/kafkaData/ // 設(shè)置Kafka的消息數(shù)據(jù)存儲(chǔ)路徑
zookeeper.connect=node1:2181,node2:2181,node3:2181 //zookeeperServers列表,節(jié)點(diǎn)間以逗號(hào)分開
delete.topic.enable=true
listeners=PLAINTEXT:/node1:9092
log.dirs=/root/kafkaData/
num.partitions=3
# 往其他節(jié)點(diǎn)分發(fā)安裝包
for i in 2 3 ; do scp -r kafka_2.11-0.10.2.1/node$i:$PWD ;done
在其它幾臺(tái)節(jié)點(diǎn)上,分別修改此配置文件:broker.id依次增長(zhǎng)。
2. 啟動(dòng)Kafka
啟動(dòng)kafka之前,必須要保證在每個(gè)節(jié)點(diǎn)上zookeeper都是啟動(dòng)的。
在每個(gè)節(jié)點(diǎn)上啟動(dòng)Kafka:
bin/kafka-server-start.sh [-daemon] config/server.properties
3. 集群測(cè)試
(1)進(jìn)入kafka根目錄,創(chuàng)建test主題(topic)
bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 3 --partitions 1 --topic test
(2)顯示已創(chuàng)建的topic列表
bin/kafka-topics.sh --list --zookeeper node1:2181
(3)顯示topic的詳細(xì)信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Topic:test PartitionCount:1 ReplicationFactor:3 Configs:
Topic: test Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
第一行是所有分區(qū)的一個(gè)整體描述,然后下面列出每個(gè)分期的信息,每個(gè)分區(qū)對(duì)應(yīng)一行。因?yàn)楸纠兄挥幸粋€(gè)分區(qū),所以下面只有一行。
leader:負(fù)責(zé)讀寫消息,zookeeper從所有節(jié)點(diǎn)中隨機(jī)選擇leader。
replicas:,列出所有的副本節(jié)點(diǎn),即便節(jié)點(diǎn)現(xiàn)在不在服務(wù)中。
isr:列出正在服務(wù)中的節(jié)點(diǎn)。
在本例中,節(jié)點(diǎn)1是作為leader運(yùn)行。
(4)使用客戶端命令去發(fā)送消息
bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test
(5)使用客戶端命令去消費(fèi)消息
bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --from-beginning --topic test
可以通過參數(shù) consumer-property來指定消費(fèi)者的group id:
kafka-console-consumer.sh --topic test --bootstrap-server node1:9092,node2:9092,node3:9092 --consumer-property group.id=xx
(6)測(cè)試集群容錯(cuò)能力
Kill -9 pid[leader節(jié)點(diǎn)]
此時(shí),另外一個(gè)節(jié)點(diǎn)被選做了leader, in-sync 副本列表中不再有節(jié)點(diǎn)1:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Topic:test PartitionCount:1 ReplicationFactor:3 Configs:
Topic: test Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
雖然最初負(fù)責(zé)讀寫消息的leader 不在線了,但之前的消息仍然可以消費(fèi):
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test
(7)刪除主題
bin/kafka-topics.sh --delete --zookeeper node1:2181,node2:2181,node3:2181 --topic test