分区扩容
举例,主题“user_order”目前是1个分区,这里将该主题分区减少到6个,察看批改后果
kafka-topics.sh --partitions 6 --alter --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic user_order
这里只是批改分区数,然而数据还没有迁徙过来
应用kafka提供的工具kafka-reassign-partitions.sh来迁徙数据。迁徙数据须要分三步做:
生成迁徙打算
先手动生成一个topic.json,内容如下。这里topic能够是一个列{"topics": [{ "topic": "user_order"}],"version": 1}
执行如下语句 --topics-to-move-json-file
./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topics-to-move-json-file topic.json --broker-list "0,1,2,3,4" --generate
这句命令的意思是,将topic.json里的topic迁徙到broker-list列表里列的broker上,会失去一个迁徙执行打算
Current partition replica assignment { "version": 1, "partitions": [....]}Proposed partition reassignment configuration { "version": 1, "partitions": [.....]}
新建一个文件reassignment.json,保留上边这些信息。其中Current partition replica assignment指以后的分区状况,Proposed partition reassignment configuration是打算的分区状况
数据迁徙
执行如下命令./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --execute
验证
./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --verify