编辑文件:tmp,内容如下:
{"topics":
[{"topic": "__consumer_offsets"},{"topic": "kafka_topic"}],
"version":1
}
生成reassign结果:
sh kafka-reassign-partitions.sh --generate --zookeeper localhost:2181 --broker-list 0,1,2,3,4,5 --topics-to-move-json-file tmp
将生成json结果拷贝到新的文件:tmp1,执行真正reassign操作
sh kafka-reassign-partitions.sh --execute --zookeeper localhost:2181 --broker-list 0,1,2,3,4,5 --reassignment-json-file tmp1
会在zookeeper下生成一个PERSISTENT节点(哪怕controller切换,也不会删除,从而在新controller启动后,继续进行其未完成操作):/admin/reassign_partitions 里面是tmp1写入的内容,然后controller不断协调各个broker进行操作,完成的部分会从该节点下删除,最终形成tmp1 json中的内容,后将zookeeper上/admin/reassign_partitions节点删除。