Kafka 迁移 Topics
Kafka 扩展为集群后, 需要把原单机上的部分大 topic 平衡到新 broker 上
旧 kafka 的 broker id 为0
, 新机器的是1
迁移
第一步
创建 move.json
{
"topics": [{
"topic": "test2"
}],
"version": 1
}
第二步
生成迁移分配规则 json 文件
注意
broker-list
我想所有分区都迁移到新机器, 所以只写了1
, 可以写0,1
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file move.json --broker-list "1" --generate
执行结果:
Current partition replica assignment
{"version":1,"partitions":[{"topic":"test2","partition":2,"replicas":[1]},{"topic":"test2","partition":15,"replicas":[1]},{"topic":"test2","partition":6,"replicas":[1]},{"topic":"test2","partition":12,"replicas":[1]},{"topic":"test2","partition":7,"replicas":[1]},{"topic":"test2","partition":10,"replicas":[1]},{"topic":"test2","partition":13,"replicas":[1]},{"topic":"test2","partition":9,"replicas":[1]},{"topic":"test2","partition":3,"replicas":[1]},{"topic":"test2","partition":5,"replicas":[1]},{"topic":"test2","partition":1,"replicas":[1]},{"topic":"test2","partition":0,"replicas":[1]},{"topic":"test2","partition":8,"replicas":[1]},{"topic":"test2","partition":4,"replicas":[1]},{"topic":"test2","partition":11,"replicas":[1]},{"topic":"test2","partition":14,"replicas":[1]}]}
Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"test2","partition":2,"replicas":[1]},{"topic":"test2","partition":15,"replicas":[1]},{"topic":"test2","partition":6,"replicas":[1]},{"topic":"test2","partition":12,"replicas":[1]},{"topic":"test2","partition":7,"replicas":[1]},{"topic":"test2","partition":10,"replicas":[1]},{"topic":"test2","partition":13,"replicas":[1]},{"topic":"test2","partition":9,"replicas":[1]},{"topic":"test2","partition":3,"replicas":[1]},{"topic":"test2","partition":5,"replicas":[1]},{"topic":"test2","partition":1,"replicas":[1]},{"topic":"test2","partition":0,"replicas":[1]},{"topic":"test2","partition":8,"replicas":[1]},{"topic":"test2","partition":4,"replicas":[1]},{"topic":"test2","partition":11,"replicas":[1]},{"topic":"test2","partition":14,"replicas":[1]}]}
第三步
拷贝生成的 json 内容(第二段)到新文件 reassignment.json
中, 然后执行
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file reassignment.json --execute
第四步
查看 topics
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test2
Topic:test2 PartitionCount:16 ReplicationFactor:2 Configs:
Topic: test2 Partition: 0 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 1 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 2 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 3 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 4 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 5 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 6 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 7 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 8 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 9 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 10 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 11 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 12 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 13 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 14 Leader: 0 Replicas: 1,0 Isr: 0
Topic: test2 Partition: 15 Leader: 0 Replicas: 1,0 Isr: 0
如果 topics 比较大, 迁移需要一会儿, 这个时候 Replicas 是 broker 的 0,1 共有, 稍后一会儿迁移完成后再查看
Topic:test2 PartitionCount:16 ReplicationFactor:1 Configs:
Topic: test2 Partition: 0 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 1 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 2 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 3 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 4 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 5 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 6 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 7 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 8 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 9 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 10 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 11 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 12 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 13 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 14 Leader: 1 Replicas: 1 Isr: 1
Topic: test2 Partition: 15 Leader: 1 Replicas: 1 Isr: 1
参考文档: http://blog.csdn.net/louisliaoxh/article/details/51605146