美文网首页bigData
kafka如何扩容服务器、重新分区Partition

kafka如何扩容服务器、重新分区Partition

作者: 叫小七的剑客 | 来源:发表于2020-04-11 21:20 被阅读0次

    1.扩容
    在新的物理机上安装kafka程序,修改config/server.properties文件里的broker.id必须在集群中唯一,修改其他必要的配置项,其中zookeeper.connect配置项,写上kafka集群现在使用的zookeeper集群的地址。
    然后启动kafka就可以加入到集群中了。
    但是新加入的机器只能对新产生的topic起作用,对已有的topic在没有做处理前,是不会承担任何任务的,所以不会分担集群的压力。

    2.重新分区Partition
    假设有一个名为test的topic,只有1个partition,现在由于存储空间不足,需要重新分区。

    2.1. 修改topic的partitions
    ./bin/kafka-topics.sh --zookeeper 10.0.210.152:2181 --alter --topic test --partitions 6
    现在topic有6个partition,但是数据还没有迁移过去

    2.2 .迁移数据
    使用kafka提供的工具kafka-reassign-partitions.sh来迁移数据。迁移数据需要分三步做

    第一步:生成迁移计划
    先手动生成一个topic.json,内容如下。这里topic可以是一个列表,

    {
    "topics": [
    {"topic": "test"}
    ],
    "version": 1
    }
    

    执行如下语句,

    ./bin/kafka-reassign-partitions.sh --zookeeper 10.0.210.152: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 10.0.210.152:2181 --reassignment-json-file reassignment.json --execute
    

    第三步:验证

    ./bin/kafka-reassign-partitions.sh --zookeeper 10.0.210.152:2181 --reassignment-json-file reassignment.json --verify
    

    作者:达微
    链接:https://www.jianshu.com/p/ce6c50decd0c
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

        本文标题:kafka如何扩容服务器、重新分区Partition

        本文链接:https://www.haomeiwen.com/subject/wcypmhtx.html