`
liyonghui160com
  • 浏览: 774657 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

kafka迁移与扩容

阅读更多

 

参考官网site:

http://kafka.apache.org/documentation.html#basic_ops_cluster_expansion

 

https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-6.ReassignPartitionsTool

 

说明:

当我们对kafka集群扩容时,需要满足2点要求:

 

  1. 将指定topic迁移到集群内新增的node上。
  2. 将topic的指定partition迁移到新增的node上。

1. 迁移topic到新增的node上

 

假如现在一个kafka集群运行三个broker,broker.id依次为101,102,103,后来由于业务数据突然暴增,需要新增三个broker,broker.id依次为104,105,106.目的是要把push-token-topic迁移到新增node上。

 

1、脚本migration-push-token-topic.json文件内容如下:

 

{

"topics":

[

{

"topic": "push-token-topic"

}

],

"version":1

}
 

 

2、执行脚本如下所示:

 

root@localhost:$  ./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --topics-to-move-json-file  migration-push-token-topic.json  --broker-list  "104,105,106"  --generate
 

 

生成分配partitions的json脚本 备份恢复使用:

Current partition replica assignment

{"version":1,"partitions":[{"topic":"cluster-switch-topic","partition":10,"replicas":[8]},{"topic":"cluster-switch-topic","partition":5,"replicas":[4]},{"topic":"cluster-switch-topic","partition":3,"replicas":[5]},{"topic":"cluster-switch-topic","partition":4,"replicas":[5]},{"topic":"cluster-switch-topic","partition":9,"replicas":[5]},{"topic":"cluster-switch-topic","partition":1,"replicas":[5]},{"topic":"cluster-switch-topic","partition":11,"replicas":[4]},{"topic":"cluster-switch-topic","partition":7,"replicas":[5]},{"topic":"cluster-switch-topic","partition":2,"replicas":[4]},{"topic":"cluster-switch-topic","partition":0,"replicas":[4]},{"topic":"cluster-switch-topic","partition":6,"replicas":[4]},{"topic":"cluster-switch-topic","partition":8,"replicas":[4]}]}

 

 

重新分配parttions的json脚本如下:

migration-topic-cluster-switch-topic.json

 

 {"version":1,"partitions":[{"topic":"cluster-switch-topic","partition":10,"replicas":[5]},{"topic":"cluster-switch-topic","partition":5,"replicas":[4]},{"topic":"cluster-switch-topic","partition":4,"replicas":[5]},{"topic":"cluster-switch-topic","partition":3,"replicas":[4]},{"topic":"cluster-switch-topic","partition":9,"replicas":[4]},{"topic":"cluster-switch-topic","partition":1,"replicas":[4]},{"topic":"cluster-switch-topic","partition":11,"replicas":[4]},{"topic":"cluster-switch-topic","partition":7,"replicas":[4]},{"topic":"cluster-switch-topic","partition":2,"replicas":[5]},{"topic":"cluster-switch-topic","partition":0,"replicas":[5]},{"topic":"cluster-switch-topic","partition":6,"replicas":[5]},{"topic":"cluster-switch-topic","partition":8,"replicas":[5]}]}

 

3、执行:

 

root@localhost:$   bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --reassignment-json-file migration-topic-cluster-switch-topic.json --execute
 

 

 执行后会生成一个json格式文件expand-cluster-reassignment.json 

4、查询执行状态:
bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183 --reassignment-json-file expand-cluster-reassignment.json --verify
 
正常执行后会返回当前数据迁移的不用partion的,信息状态类似下面

 

Reassignment of partition [push-token-topic,0] completed successfully   //移动成功
Reassignment of partition [push-token-topic,1] is in progress          //这行代表数据在移动中
Reassignment of partition [push-token-topic,2] is in progress
Reassignment of partition [push-token-topic,1] completed successfully 
Reassignment of partition [push-token-topic,2] completed successfully

 

 这样做不会影响原来集群上的topic业务

 

2.topic修改(replicats-factor)副本个数

 

假如初始时push-token-topic为一个副本,为了提高可用性,需要改为2副本模式。

脚本replicas-update-push-token-topic.json文件内容如下:

{

        "partitions":

                [

                {

                        "topic": "log.mobile_nginx",

                        "partition": 0,

                        "replicas": [101,102,104]

                },

                {

                        "topic": "log.mobile_nginx",

                        "partition": 1,

                        "replicas": [102,103,106]

                }            

],             

        "version":1

}

 

 2、执行:

root@localhost:$ ./bin/kafka-reassign-partitions.sh --zookeeper   192.168.2.225:2183 --reassignment-json-file  replicas-update-push-token-topic.json  --execute
执行后会列出当前的partition和修改后的patition
3、verify
bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2181 --reassignment-json-file replicas-update-push-token-topic.json --verify
 如下:
Status of partition reassignment:
Reassignment of partition [log.mobile_nginx,0] completed successfully
Reassignment of partition [log.mobile_nginx,1] completed successfully

 

3.自定义分区和迁移

 

1、The first step is to hand craft the custom reassignment plan in a json file-

> cat custom-reassignment.json
{"version":1,"partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},{"topic":"foo2","partition":1,"replicas":[2,3]}]}
2、Then, use the json file with the --execute option to start the reassignment process-
> bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file custom-reassignment.json --execute

Current partition replica assignment

{"version":1,
 "partitions":[{"topic":"foo1","partition":0,"replicas":[1,2]},
               {"topic":"foo2","partition":1,"replicas":[3,4]}]
}

Save this to use as the --reassignment-json-file option during rollback
Successfully started reassignment of partitions
{"version":1,
 "partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},
               {"topic":"foo2","partition":1,"replicas":[2,3]}]
}

 

3、The --verify option can be used with the tool to check the status of the partition reassignment. Note that the same expand-cluster-reassignment.json (used with the --execute option) should be used with the --verify option

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

Status of partition reassignment:
Reassignment of partition [foo1,0] completed successfully
Reassignment of partition [foo2,1] completed successfully 

 

4.topic的分区扩容用法

 

a.先扩容分区数量,脚本如下:

例如:push-token-topic初始分区数量为12,目前到增加到15个

root@localhost:$ ./bin/kafka-topics.sh --zookeeper 192.168.2.225:2183 --alter --partitions 15 --topic   push-token-topic

 

b.设置topic分区副本

root@localhost:$ ./bin/kafka-reassign-partitions.sh --zookeeper  192.168.2.225:2183

--reassignment-json-file partitions-extension-push-token-topic.json  --execute

脚本partitions-extension-push-token-topic.json文件内容如下:

 

 

{  

        "partitions":  

                [  

                {  

                        "topic": "push-token-topic",  

                        "partition": 12,  

                        "replicas": [101,102]  

                },  

                {  

                        "topic": "push-token-topic",  

                        "partition": 13,  

                        "replicas": [103,104]  

                },  

                {  

                        "topic": "push-token-topic",  

                        "partition": 14,  

                        "replicas": [105,106]  

                }  

                ],               

        "version":1  

}

 

 以上不对的地方,还请大家原谅

分享到:
评论

相关推荐

    kafka扩容方案-kafka-manager重新分配topic

    扩容方案可以分为五个步骤:扩容准备、扩容 Kafka 服务、部署 kafka-manager、 Topic 迁移和修改连接配置。 1. 扩容准备 在扩容之前,需要准备好新的节点,包括新节点的 Kafka 服务目录、日志目录和配置文件。新...

    Kafka集群应用实践与技术演进之路.pptx

    在平滑扩容方面,原有的扩容流程存在从Partition最初offset开始迁移数据的问题,这会导致物理资源的大量消耗,影响Produce的延迟和稳定性。为了解决这个问题,采用了从最新offset开始迁移数据的方法,并同步一段时间...

    Kafka在网易云上的实践.pdf

    9. **集群的动态管理**:网易云Kafka提供了集群的动态扩容和缩容的能力,简化了从创建虚拟机到迁移数据,再到集群状态检测等一系列操作。 10. **多AZ技术实现**:即多可用区技术,它是通过分布式的架构来提升服务的...

    5-5+基于Logi-KafkaManager打造专业易用Kafka+PAAS服务.pdf

    自动发现和解决分区热点问题,设定扩容标准,以及无流量Topic的自动下线机制,提升资源利用率。 10. **生态友好**: 监控指标可上报到Kafka Topic,用户可以自定义告警渠道。默认对接滴滴开源的夜莺系统,支持...

    基于kafka1.0建立企业级消息平台的若干思考.pdf

    另外,文档中提到了VMS平台v2.0的功能支持,包括认证与授权、延时消息、动态水平扩容、配置管理及流程审核、高性能的ACK机制、消息重试、增强监控及告警、死信队列、集群资源管理、消息回溯、消息多维度查询、组内...

    Kafka 负载均衡在 vivo 的落地实践.doc

    文中通过流量分布图展示了在没有负载均衡的情况下,部分broker的流量过重,而新扩容的节点无法自动分摊流量。这主要是由于Kafka的存储结构决定的。每个broker可以有多个log目录,每个目录下存储特定topic的分区数据...

    万亿级消息队列Kafka在滴滴的应用实践.pdf

    1. **Kafka-Manager升级**:增强用户自助服务能力,提供Topic资源管理、监控告警和问题诊断功能,实现集群变更、扩容的自动化。 2. **引擎迭代**:优化Topic的ACK策略,提升性能;探索Topic弹性资源调度方案,以适应...

    Metamorphosis介绍.pptx

    * 数据迁移、扩容对用户透明 * 消费状态保存在客户端 应用场景 Metamorphosis可以应用于各种需要高性能、低延迟的消息系统场景,例如: * 普通的消息发布订阅模型 * 收集和传输日志 * 数据同步 * 支付宝淘淘宝的...

    泛微E10售前技术资料 E10技术架构介绍

    E10技术架构的总体框架包括安装、拆分、监控、告警、启停、配置、扩容、报告、清理、合并、升级、迁移、运维平台、绩效考核、审批、文档、项目任务等方面。 前端技术架构介绍: E10技术架构的前端技术架构包括JS...

    Java思维导图xmind文件+导出图片

    系统动态扩容 分布式架构策略-分而治之 从简到难,从网络通信探究分布式通信原理 基于消息方式的系统间通信 理解通信协议传输过程中的序列化和反序列化机制 基于框架的RPC通信技术 WebService/ApacheCXF RMI...

    京东金融数据库多场景架构实践.pdf

    - **CDS**:为业务应用提供1-M、2-M、3-M等模式的数据库集群服务,支持数据迁移和扩容,提高系统的灵活性。 - **HDB**:通过LVS负载均衡,实现数据库的高并发访问,提升服务性能。 - **R2M**:允许应用程序...

    亿级大数据实时分析平台.pptx

    HBase因其天生适合大数据处理、灵活的Schema变更、方便的扩容和Facebook等公司的成功实践而被青睐。在小米,HBase是从MySQL平滑迁移过来的,通过双写、迁移历史数据、双读验证数据一致性和逐步灰度切换实现。 HBase...

    Canal自动化运维以及容灾系统架构.pptx

    4. **功能扩展与迁移**:不支持动态扩容、缩容和实例动态迁移,限制了系统的灵活性。 5. **高可用与容灾**:现有的架构并不支持异地容灾,当面临机房故障时,无法快速恢复服务,可能造成服务中断和数据丢失。 ### ...

    大数据运维工程师的基本职责.docx

    - 管理Hadoop运维工作,包括日常部署、升级、扩容和迁移。 4. **大数据平台优化**: - 负责处理高并发、大存储和实时流的大数据平台规划、运维、监控和优化。 - 深入理解和优化Hadoop、Spark等大数据生态系统的...

    大数据平台架构-巨衫.docx

    4. 读写分离:支持在线扩容,简化系统升级。 5. 完善的运维工具:提供WEB管理界面,保障系统整体性能。 1.1.3 产品比较与竞争优势 巨杉数据库相较于其他数据库产品,具有明显的竞争优势,包括对结构化数据和海量小...

    大数据平台架构-巨衫 (2).docx

    6. 在线扩容:系统升级快速简单,确保业务连续性。 7. 完善的运维和监控工具:提供WEB管理界面,保障系统性能。 【本地化服务】是SequoiaDB的另一大优势,作为国产数据库,它提供了强大的本地企业服务和维护能力,...

    容器云存储的需求分析和方案选型.docx

    3. **扩展性**:存储系统应能随业务增长灵活扩展,支持无缝扩容。 4. **容灾与备份**:确保有可靠的备份策略和灾难恢复计划,以应对意外情况。 5. **成本效益**:平衡功能、性能与成本,选择性价比高的解决方案。 ...

Global site tag (gtag.js) - Google Analytics