美文网首页
kafka集群维护

kafka集群维护

作者: 先生_吕 | 来源:发表于2017-01-16 12:00 被阅读369次

    【kafka集群维护】

    #创建一个主题:
        ./kafka-topics.sh --create --zookeeper 192.168.1.224:2181 --replication-factor 1 --partitions 1 --topic test
    
    创建一个主题.png
    #创建一个消息发布者:
        ./kafka-console-producer.sh --broker-list 192.168.1.225:19092 --topic test
    
    创建一个消息发布者.png
    #创建一个消息订阅者:
        ./kafka-console-consumer.sh --zookeeper 192.168.1.226:12181 --topic test --from-beginning
    
    创建一个消息订阅者.png
    #查看主题列表:
        ./kafka-topics.sh --list --zookeeper 192.168.1.224:2181
    
    查看主题列表.png
    #查看特定主题信息:
        ./kafka-topics.sh -describe --zookeeper 192.168.1.224:2181 --topic test
    
    查看特定主题信息.png
    #增加partition:
        ./kafka-topics.sh --zookeeper localhost:2181    --alter   --topic lvfang     --partitions 2
    
    增加分区.png
    #集群leader平衡:
        ./kafka-preferred-replica-election.sh --zookeeper localhost:2181
    
    集群平衡机制.png

    【kafka集群分区日志迁移】(热部署)
    迁移topic数据到其他broker,请遵循下面四步:

    1.写json文件,文件格式如下:
        cat topics-to-move.json
        {"topics": [{"topic": "foo1"},
                    {"topic": "foo2"}],
         "version":1
        }
    
    
    2.使用–generate生成迁移计划(下面的操作是将topic: foo1和foo2移动到broker 5,6):
        bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file topics-to-move.json --broker-list "5,6"  --generate
        这一步只是生成计划,并没有执行数据迁移;
    
    3.使用–execute执行计划:
        bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --execute
        执行前最好保存当前的分配情况,以防出错回滚
    
    4.使用–verify验证是否已经迁移完成
        bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --verify
    
    
    额外内容:
    
    迁移某个topic的某些特定的partition数据到其他broker,步骤与上面一样,但是json文件如下面所示:
    
    cat custom-reassignment.json
    
    {"version":1,"partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},{"topic":"foo2","partition":1,"replicas":[2,3]}]}
    可以指定到topic的分区编号
    
    
    kafka-reassign-partitions.sh工具会复制磁盘上的日志文件,只有当完全复制完成,才会删除迁移前磁盘上的日志文件。执行分区日志迁移需要注意:
    
    
    kafka-reassign-partitions.sh 工具的粒度只能到broker,不能到broker的目录(如果broker上面配置了多个目录,是按照磁盘上面已驻留的分区数来均匀分配的),
    所以,如果topic之间的数据,或者topic的partition之间的数据本身就不均匀,很有可能造成磁盘数据的不均匀:
    
    对于分区数据较多的分区迁移数据会花大量的时间,所以建议在topic数据量较少或磁盘有效数据较少的情况下执行数据迁移操作;
    
    进行分区迁移时最好先保留一个分区在原来的磁盘,这样不会影响正常的消费和生产,如果目的是将分区5(brober1,5)迁移到borker2,3。
    
    可以先将5迁移到2,1,最后再迁移到2,3。而不是一次将1,5迁移到2,3。因为一次迁移所有的副本,无法正常消费和生产,部分迁移则可以正常消费和生产。
    
    kafka集群信息查看_数据迁移topic.png

    相关文章

      网友评论

          本文标题:kafka集群维护

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