分区扩容

举例,主题“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来迁徙数据。迁徙数据须要分三步做:

  1. 生成迁徙打算
    先手动生成一个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是打算的分区状况

  2. 数据迁徙
    执行如下命令

    ./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --execute
  3. 验证

    ./bin/kafka-reassign-partitions.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --reassignment-json-file reassignment.json --verify