背景
最近工作中碰到Kafka 节点的网卡成为了性能瓶颈,为了提高整个消息队列的输出吞吐量,需要将数据量大的Topic 迁移到新的Kafka节点上。
操作步骤
1. 新建Kafka 节点
通过CDH 管理界面在新机器上安装Kafka 服务,并得到相应的Kafka broker id。(假设为140, 141)
2. 创建要迁移的Topic 列表
查看所有的Topic
$ cd /opt/cloudera/parcels/KAFKA/bin
$ ./kafka-topics --describe --zookeeper 10.1.1.50:2181/kafka
如果要删除某些不用的Topic,可运行命令
$ ./kafka-run-class kafka.admin.TopicCommand --delete --topic test_p1_r1 --zookeeper 10.1.1.50:2181/kafka
新建文件topics-to-move.json,包含要迁移到Topic 列表。这里只迁移了一个Topic,也可以是多个Topic。
{
"topics": [{"topic": "sdk_counters"}],
"version": 1
}
3. 生成Topic 分区分配表
使用kafka-reassign-partitions 工具生成分区分配表,其中需要指定topics-to-move.json 文件和迁移目标节点的broker id
$ ./kafka-reassign-partitions --zookeeper 10.1.1.50:2181/kafka --topics-to-move-