【导语】2020军队文职计算机知识:大数据之Kafka集群安装与测试已发布,为助力各位考生做好2020年军队文职招聘考试准备,红师军队文职考试网提供了军队文职专业科目和综合辅导等内容,祝大家考试顺利。
一、 安装JDK &配置JAVA_HOME
JDK安装和JAVA_HOME配置,大家都应该很熟悉了,我们在此不再赘述。
二、 安装Zookeeper
参照Zookeeper官网搭建一个ZK集群, 并启动ZK集群。
三、 解压Kafka安装包
1. 修改配置文件config/server.properties
vi server.properties
broker.id=0 //集群中唯一id,依次增长:0、1、2、3、4
log.dirs=/root/kafkaData/ // 设置Kafka的消息数据存储路径
zookeeper.connect=node1:2181,node2:2181,node3:2181 //zookeeperServers列表,节点间以逗号分开
delete.topic.enable=true
listeners=PLAINTEXT:/node1:9092
log.dirs=/root/kafkaData/
num.partitions=3
# 往其他节点分发安装包
for i in 2 3 ; do scp -r kafka_2.11-0.10.2.1/node$i:$PWD ;done
在其它几台节点上,分别修改此配置文件:broker.id依次增长。
2. 启动Kafka
启动kafka之前,必须要保证在每个节点上zookeeper都是启动的。
在每个节点上启动Kafka:
bin/kafka-server-start.sh [-daemon] config/server.properties
3. 集群测试
(1)进入kafka根目录,创建test主题(topic)
bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 3 --partitions 1 --topic test
(2)显示已创建的topic列表
bin/kafka-topics.sh --list --zookeeper node1:2181
(3)显示topic的详细信息
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
第一行是所有分区的一个整体描述,然后下面列出每个分期的信息,每个分区对应一行。因为本例中只有一个分区,所以下面只有一行。
leader:负责读写消息,zookeeper从所有节点中随机选择leader。
replicas:,列出所有的副本节点,即便节点现在不在服务中。
isr:列出正在服务中的节点。
在本例中,节点1是作为leader运行。
(4)使用客户端命令去发送消息
bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test
(5)使用客户端命令去消费消息
bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --from-beginning --topic test
可以通过参数 consumer-property来指定消费者的group id:
kafka-console-consumer.sh --topic test --bootstrap-server node1:9092,node2:9092,node3:9092 --consumer-property group.id=xx
(6)测试集群容错能力
Kill -9 pid[leader节点]
此时,另外一个节点被选做了leader, in-sync 副本列表中不再有节点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
虽然最初负责读写消息的leader 不在线了,但之前的消息仍然可以消费:
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