• kafka集群扩容后的topic分区迁移


    kafka集群扩容后,新的broker上面不会数据进入这些节点,也就是说,这些节点是空闲的;它只有在创建新的topic时才会参与工作。除非将已有的partition迁移到新的服务器上面;
    所以需要将一些topic的分区迁移到新的broker上。

    kafka-reassign-partitions.sh是kafka提供的用来重新分配partition和replica到broker上的工具
    简单实现重新分配需要三步:

    • 生成分配计划(generate)
    • 执行分配(execute)
    • 检查分配的状态(verify)

    具体操作如下:

    1. 生成分配计划

    编写分配脚本:
    vi topics-to-move.json

    内容如下:

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

    执行分配计划生成脚本:

    kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate

    执行结果如下:

    [hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate
    Current partition replica assignment  #当前分区的副本分配
    
    {"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[3,4]},{"topic":"event_request","partition":1,"replicas":[4,5]}]}
    Proposed partition reassignment configuration #建议的分区配置
    
    {"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[6,5]},{"topic":"event_request","partition":1,"replicas":[7,6]}]}

    Proposed partition reassignment configuration 后是根据命令行的指定的brokerlist生成的分区分配计划json格式。将 Proposed partition reassignment configuration的配置copy保存到一个文件中 topic-reassignment.json
    vi topic-reassignment.json

    {"version":1,"partitions":[{"topic":"event_request","partition":0,"replicas":[6,5]},{"topic":"event_request","partition":1,"replicas":[7,6]}]}

    2. 执行分配(execute)

    根据step1 生成的分配计划配置json文件topic-reassignment.json,进行topic的重新分配。

    kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --execute

    执行前的分区分布:

    [hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
    Topic:event_request PartitionCount:2    ReplicationFactor:2 Configs:
        Topic: event_request    Partition: 0    Leader: 3   Replicas: 3,4   Isr: 3,4
        Topic: event_request    Partition: 1    Leader: 4   Replicas: 4,5   Isr: 4,5

    执行后的分区分布:

    [hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
    Topic:event_request PartitionCount:2    ReplicationFactor:4 Configs:
        Topic: event_request    Partition: 0    Leader: 3   Replicas: 6,5,3,4   Isr: 3,4
        Topic: event_request    Partition: 1    Leader: 4   Replicas: 7,6,4,5   Isr: 4,5

    3. 检查分配的状态

    查看分配的状态:正在进行

    [hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --verify
    Status of partition reassignment:
    Reassignment of partition [event_request,0] is still in progress
    Reassignment of partition [event_request,1] is still in progress
    [hadoop@sdf-nimbus-perf topic_reassgin]$ 

    查看“is still in progress” 状态时的分区,副本分布状态:

    发现Replicas有4个哦,说明在重新分配的过程中新旧的副本都在进行工作。

    [hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
    Topic:event_request PartitionCount:2    ReplicationFactor:4 Configs:
        Topic: event_request    Partition: 0    Leader: 3   Replicas: 6,5,3,4   Isr: 3,4
        Topic: event_request    Partition: 1    Leader: 4   Replicas: 7,6,4,5   Isr: 4,5

    查看分配的状态:分配完成。

    [hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $ZK_CONNECT --reassignment-json-file topic-reassignment.json --verify
    Status of partition reassignment:
    Reassignment of partition [event_request,0] completed successfully
    Reassignment of partition [event_request,1] completed successfully

    查看“completed successfully”状态的分区,副本状态:

    已经按照生成的分配计划正确的完成了分区的重新分配。

    [hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request
    Topic:event_request PartitionCount:2    ReplicationFactor:2 Configs:
        Topic: event_request    Partition: 0    Leader: 6   Replicas: 6,5   Isr: 6,5
        Topic: event_request    Partition: 1    Leader: 7   Replicas: 7,6   Isr: 6,7
  • 相关阅读:
    拉格朗日乘子基本概念
    "模式识别与机器学习"读书笔记——2.3(2)
    [raw]人工智能方向调查
    Android !No Launcher activity found!错误
    [raw]ubuntu在当前目录右键打开终端
    Android, 读取大型文件报错
    Blueman Ubuntu的蓝牙管理器
    VMware下Ubuntu8.04 方向键失效的解决方法
    无线中间人攻击初探
    【经验】短接 Flash 解决二次量产金士顿 DTI G2 4GB U盘(群联PS225139)问题
  • 原文地址:https://www.cnblogs.com/Leslieblog/p/10413214.html
Copyright © 2020-2023  润新知