kafka相关命令整理(一)
(1)启动kafka-zookeeper命令
#!/bin/sh nohup bin/zookeeper-server-start.sh config/zookeeper.properties >/dev/null 2>&1 & |
(2)启动kafka-broker命令
#!/bin/sh nohup bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 & |
(3)创建topic
#bin/kafka-topics.sh --create --topic news_doc --replication-factor 2 --partitions 20 --zookeeper 114.113.145.7:2181
#bin/kafka-topics.sh --create --topic entry_doc --replication-factor 2 --partitions 20 --zookeeper 114.113.145.7:2181
#bin/kafka-topics.sh --create --topic crawler_mail --replication-factor 2 --partitions 5 --zookeeper 114.113.145.7:2181
(4)查看所有的topic名称列表
bin/kafka-topics.sh --list --zookeeper 114.113.145.7:2181
(5)删除topic
bin/kafka-topics.sh --delete --zookeeper 114.113.145.7:2181 --topic news_doc
bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper 114.113.145.7:2181 --topic news_doc
(6)查看topic内的数据
bin/kafka-console-consumer.sh --zookeeper 10.136.64.57 --topic entry_doc
(7)查看创建的topic信息
bin/kafka-topics.sh --describe --zookeeper 10.136.64.57:2181 --topic news_doc
(8)Kafka集群扩展以及重新分布分区
往已经部署好的Kafka集群里面添加机器是最正常不过的需求,但是新添加的Kafka节点并不会自动地分配数据,所以无法分担集群的负载,除非我们新建一个topic。但是现在我们想手动将部分分区移到新添加的Kafka节点上,Kafka内部提供了自带的kafka-reassign-partitions.sh工具来重新分布某个topic的分区。
在重新分布topic分区之前,我们先来看看现在topic的各个分区的分布位置:
./bin/kafka-topics.sh --topic iteblog --describe --zookeeper 10.136.64.57:2181 Topic:iteblog PartitionCount:7 ReplicationFactor:2 Configs: Topic: iteblog Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: iteblog Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3 Topic: iteblog Partition: 2 Leader: 3 Replicas: 3,4 Isr: 3,4 Topic: iteblog Partition: 3 Leader: 4 Replicas: 4,1 Isr: 4,1 Topic: iteblog Partition: 4 Leader: 1 Replicas: 1,3 Isr: 1,3 Topic: iteblog Partition: 5 Leader: 2 Replicas: 2,4 Isr: 2,4 Topic: iteblog Partition: 6 Leader: 3 Replicas: 3,1 Isr: 3,1 |
从上面的输出可以看出,iteblog主题一共有7个分区,但是我们broker的个数只有4个,所以会导致某些broker维护更多的分区。现在我们在现有集群的基础上再添加一个Kafka节点,然后使用Kafka自带的kafka-reassign-partitions.sh工具来重新分布分区。该工具有三种使用模式:
1、generate模式,给定需要重新分配的Topic,自动生成reassign plan(并不执行)
2、execute模式,根据指定的reassign plan重新分配Partition
3、verify模式,验证重新分配Partition是否成功
(9)修改kafka的topic分区个数
bin/kafka-topics.sh --zookeeper 10.136.64.57:2181 --alter --topic entry_doc --partitions 40