共计 1065 个字符,预计需要花费 3 分钟才能阅读完成。
分区扩容
举例,主题“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
正文完