创建topic
[root@hadoop1 kafka_2.12-1.1.0]# ./bin/kafka-topics.sh --create --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181 --replication-factor 3 --partitions 3 --topic test
注:"test"是topic的名字;"partitions"表示分区个数,在消费过程中,一个分区只能被一个消费者消费,但是一个消费者可以消费多个分区,使用分区个数要大于等于消费者的个数,当分区个数小于消费者个数时,会造成消费者空闲浪费;此外分区的个数也应该大于等于broker的个数,这样会leader partition就会均匀的分布在各个broker上,实现负载均衡;同时"leader"分区负责读写,"follower"分区负责同步数据,"replication-factor"表示数据的备份数量,他的个数只能小于等于broker的数量,因为在备份时,应该broker会备份一份,如果备份数量大于broker的数量时,创建主题就好失败。另外,kafka的所有主题都是存储在zookeeper集群中。
查看已创建的topic列表
[root@hadoop1 kafka_2.12-1.1.0]# ./bin/kafka-topics.sh --list --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181
描述主题
[root@hadoop3 kafka_2.12-1.1.0]#./bin/kafka-topics.sh --describe --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181 --topic test
注:"test"是要描述的主题
删除主题
[root@hadoop1 kafka_2.12-1.1.0]#./bin/kafka-topics.sh --delete --zookeeper hadoop1:2181,hadoop2:2181,hadoop3:2181 --topic test
注: 如果想删除kafaka中的主题,必须在配置文件中server.properties中添加"delete.topic.enable=true"参数,否则,此时的删除并不是真正的删除,而是把topic标记为:marked for deletion,主题仍然在zookeeper集群中
启动生产者(会占用当前窗口)
[root@hadoop1 kafka_2.12-1.1.0]#./bin/kafka-console-producer.sh --broker-list hadoop1:9092, hadoop2:9092, hadoop3:9092 --topic test
注:"hadoop1:9092, hadoop2:9092, hadoop3:9092"是broker服务端所在的机器;"test"表示往哪个主题中存储数据。此处可以输入内容,用于生产信息。
启动消费者
[root@hadoop2 kafka_2.12-1.1.0]# ./bin/kafka-console-consumer.sh --bootstrap-server hadoop1:9092, hadoop2:9092, hadoop3:9092 --from-beginning --topic test
注:"–from-beginning "表示从生产者生成数据开始时,开始消费数据;不写此参数,表示从消费者启动时,开始消费数据,之前生产者生成的数据不会被消费;"test"表示从哪个主题中消费数据。