zoukankan      html  css  js  c++  java
  • Kafka增加Kafka Topic的分区复本数(0.8.2.1)

    增加Kafka Topic的分区复本数(0.8.2.1)

    2018-06-26 11:25:26 weixin_37648944 阅读数 51

    说明

    Kafka提供了一个工具,用于调整Topic中各个分区的复本数据。工具名称叫kafka-reassign-partitions.sh。

    过程

    创建一个Topic,共2个分区,副本数为2(共2份,含原始数据):

    /opt/kafka/bin/kafka-topics.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka --create --replication-factor 2 --partitions 2 --topic testTopic1

    查看该Topic。分区0的Leader是1,分区1的Leader是2:

    
     
    1. [root@data01 bin]# /opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic testTopic1

    2. Topic:testTopic1 PartitionCount:2 ReplicationFactor:2 Configs:

    3. Topic: testTopic1 Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2

    4. Topic: testTopic1 Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

    5. [root@data01 bin]#

    准备一些数据,放在data.file中,然后将数据灌入Kakfa Topic:

    /opt/kafka/bin/kafka-console-producer.sh --broker-list data01:9092,data02:9092,data03:9092 --topic testTopic1 < data.file

    在各broker的数据目录下,可以看到当前对应的Topic分区目录:

    
     
    1. [root@cheyo tmp]# dsh -g kafka -c "du -sh /opt/kafka/kafka-logs/testTopic*"

    2. data01: 44K /opt/kafka/kafka-logs/testTopic1-0

    3. data02: 44K /opt/kafka/kafka-logs/testTopic1-0

    4. data02: 4.0K /opt/kafka/kafka-logs/testTopic1-1

    5. data03: 4.0K /opt/kafka/kafka-logs/testTopic1-1

    6. [root@cheyo tmp]#

    调整副本数据的配置是以json文件描述的,然后json文件作为参数传递给相关工具。json文件中描述了各个分区的复本如何放置。这里,我们分别为testTopic1的两个分区在原来的基础上新增加了第3个分区。

    replication.json:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    {
        "version": 1, 
        "partitions": [
            {
                "topic": "testTopic1", 
                "partition": 0, 
                "replicas": [
                    1, 
                    2, 
                    3
                ]
            },
            {
                "topic": "testTopic1", 
                "partition": 1, 
                "replicas": [
                    2, 
                    3, 
                    1
                ]
            }
        ]
    }
    

    执行更新复本操作:

    
     
    1. /opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka \

    2. --reassignment-json-file replication.json --execute

    这个操作需要一些时间,我们可以通过如下命令查看进度(将上述命令中的execute参数改为verify参数:

    
     
    1. /opt/kafka/bin/kafka-reassign-partitions.sh --zookeeper data01:2181,data02:2181,data03:2181/kafka \

    2. --reassignment-json-file replication.json --verify

    检查

    操作完成后,再次查看topic的详细信息,可以看到相应的分区已经增加:

    
     
    1. [root@data01 test]# /opt/kafka/bin/kafka-topics.sh --describe --zookeeper data01:2181,data02:2181,data03:2181/kafka --topic testTopic1

    2. Topic:testTopic1 PartitionCount:2 ReplicationFactor:3 Configs:

    3. Topic: testTopic1 Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3

    4. Topic: testTopic1 Partition: 1 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1

    5. [root@data01 test]#

    相应的数据目录也已经增加:

    
     
    1. [root@cheyo tmp]# dsh -g kafka -c "du -sh /opt/kafka/kafka-logs/testTopic*"

    2. data01: 44K /opt/kafka/kafka-logs/testTopic1-0

    3. data01: 4.0K /opt/kafka/kafka-logs/testTopic1-1

    4. data03: 40K /opt/kafka/kafka-logs/testTopic1-0

    5. data03: 4.0K /opt/kafka/kafka-logs/testTopic1-1

    6. data02: 44K /opt/kafka/kafka-logs/testTopic1-0

    7. data02: 4.0K /opt/kafka/kafka-logs/testTopic1-1

    8. [root@cheyo tmp]#

    工具/kafka-reassign-partitions.sh说明

    这个工具有三种参数:

    1、带--generate参数:生成建议的分区重分布方案

    2、带--execute参数:根据指定的分区重分布方案执行分区调整动作

    3、带--verify参数:查看--exceute操作的结果。

    本文档中使用了2和3两个参数。

    补充

    按这个用法,这个工具不仅可以用来增加分区数,在扩容broker数量等场景下,也可以用来调整各个分区在各个节点上的分布。

    参考文档

    1. Kafka如何动态增加Topic的副本(Replication)
  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/grj001/p/12223621.html
Copyright © 2011-2022 走看看