基本操作
本节将列一下在Kafka集群上的最常用的操作。所有在本节被提到的工作都可以$KAFKA_HOME/bin目录下找到;并且每个工具都会较详细的打印命令的所有可能的选项。
添加和移除Topic
你可以手动创建一个Topic也可以在第一次向某个Topic发送消息的时候由Kafka自动创建。如果Topic是被自动创建的话,你可以需要手动对一些配置项进行调优。
添加和修改Topic工具:
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name --partitions 20 --replication-factor 3 --config x=y
replication factor控制有多少个server将会复制各条被写入Topic的消息。如果该值为3,那么可以有2台server停止工作的情况下,消费端以访问到消息。我们建议你设置该值为2或者3,这样就可以在重启服务时而不影响消费端消费数据。
partition count控制该Topic会有多少个分片。首先每个parition应该在单独的一台server上。所以如果你有20个partions,那么这个Topic的整个数据集针会被不多于20个server去处理(不考虑数据备份)。最终partition count会影响消费端的最大并行数。将会在后台详细讨论这个参数。
跟在命令行后面的参数将会覆盖掉Kafka配置的默认参数。
修改Topic
你可以通过同样的命令修改Topic的配置的partition。
添加partition命令如下:
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --partitions 40
请注意当按一定的语义来区分partion的情况,添加partion并不会修改当前partition中已经存在的值,这可能使依赖某个partion进行消费消息的消费端。也就是说如果数据被通过 hash(key)%number_of_partitions 进行分区的话,那么在添加partion后,数据将会被按key进行重新放入不同的partion,不过Kafka将不会尝试去自动重新分布已经存在的数据。
添加配置项: bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --config x=y 删除配置项: bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --deleteConfig x 删除Topic bin/kafka-topics.sh --zookeeper zk_host:port/chroot --delete --topic my_topic_name
默认情况下是不能删除Topic,如果需要删除Topic的话,请在配置文件里设置如下属性
delete.topic.enable=true
Kafka当前不支持减少partition和修改replication factor的操作