【導(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