关于kafka:Kafka扩容之分区扩容

55次阅读

共计 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 来迁徙数据。迁徙数据 须要分三步做:

  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

正文完
 0