kafka安装没有介绍,可以参考网上资料,这里主要介绍一下常用的命令,方便日常运维和调试。

启动kafka

bin/kafka-server-start.sh config/server.properties

创建topic

bin/kafka-topics.sh --zookeeper **:2181 --create --topic ** --partitions 30 --replication-factor 2


注:第一个**ip地址,第二个**主题名称partitions分区数量 replication-factor 分区副本数

partitions分区数:

partitions :分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量

虽然增加分区数可以提供kafka集群的吞吐量、但是过多的分区数或者或是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗。

分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大于分区数

分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或以上的数都会出错的;这种情况可以通过alter –partitions 来增加分区数。

replication-factor副本

replication factor控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。

如果没有在创建时显示指定或通过API向一个不存在的topic生产消息时会使用broker(server.properties)中的default.replication.factor配置的数量


 

查询topic列表

bin/kafka-topics.sh --zookeeper **:2181 --list

查询topic信息

bin/kafka-topics.sh --zookeeper **:2181 --describe --topic **

控制台向topic生产数据

bin/kafka-console-producer.sh --broker-list **:9092 --topic **

控制台消费topic的数据

bin/kafka-console-consumer.sh --zookeeper **2181 --topic ** --from-beginning

查看topic某分区偏移量最大(小)值

bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic hive-mdatabase-hostsltable  --time -1 --broker-list **:9092 --partitions 0

注: time为-1时表示最大值,time为-2时表示最小值

增加topic分区数

bin/kafka-topics.sh --zookeeper node01:2181  --alter --topic ** --partitions 10

删除topic,慎用,只会删除zookeeper中的元数据,消息文件须手动删除

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper **:2181 --topic **

文件在logs下面,以主题为命名的文件,选择备份数replication-factor 是几就会在几个节点上出现

查看消费进度

bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper **:2181 --group ** --topic **

其中group 是groupid消费者名称。查询办法是从zookeeper中查询。查询方式如下:

[hadoop@h71 zookeeper-3.4.5-cdh5.5.2]$ bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 2] ls /consumers