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

分区扩容

举例,主题“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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理