赞
踩
举例,主题“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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。