Kafka集群镜像操作、集群扩展笔记

本文介绍了Kafka集群镜像与Replica的区别,并详细讲述了如何扩展Kafka集群,包括添加新broker、使用kafka-reassign-partitions.sh工具进行数据迁移。还探讨了kafka-topics.sh添加partition的方法,以及在扩展过程中对数据顺序和offset的影响。
摘要由CSDN通过智能技术生成

之前阅读了Kafka的基本概念和关于Replica的文档,现在已是晕晕乎乎。在这大好的清晨微风徐徐中,继续阅读关于Kafka集群镜像的内容。
(Kafka版本:0.8.2.1)

Kafka集群镜像

Kafka的集群镜像与Replica不同。Replica作用在单个集群中不同的节点之间;而建立集群镜像在不同的Kafka集群之间发生作用。在集群镜像的过程中,源数据来自于一个或多个不同的Kafka集群,然后数据流向一个目标集群:
from Apache Kafka
Kafka提供了专用的工具实现创建集群镜像。

这个操作的一个用途之一是创建数据中心的备份。但在严格意义上讲,它不完全是“备份”。因为创建后的镜像与源集群在partition数量、offset方面都会有所不同。但由于其使用的message key仍然不变并且也是通过Consumer的方式读取数据的,所以其顺序仍然相同。

扩展Kafka集群

添加新broker:为新的broker分配一个唯一id,然后在新的服务器上启动Kafka即可。
做到这一步完成新broker的添加,但它只有在创建新的topic时才会参与工作。除非将已有的partition迁移到新的服务器上面。

迁移数据到新broker:迁移数据只能手动执行,但整个过程是自动完成的。Kafka先将新的Server设置为要迁移的partition的follower,让它进行replica。等它将目标partition的数据完全复制,且这个新的server已经进入in sync的列表后,已有的一个replica就会删除自己的partition数据。
Kafka提供kafka-reassign-partitions.sh工具做添加新broker后的数据迁移。

kafka-reassign-partitions.sh 使用方法

本文记录下笔者的尝试过程,详细的文档说明可以在这里找到:kafka-reassign-partitions.sh
依据官方的文档,kafka-reassign-partitions.sh是用来重新分配partition和replica到broker上的工具。简单实现重新分配需要三步:
- 生成分配计划(generate)
- 执行分配(execute)
- 检查分配的状态(verify)

在我原有的集群中,只有一个broker,broker.id = 0;现在我添加了一个broker到集群中,broker.id = 1。下面记录如何对原有的partition进行重新分配。
添加broker很简单,只需要在新的机器上拷贝一份新的server.properties,然后改一个新的broker.id,启动即可。

  1. 生成分配计划
./bin/kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --topics-to-move-json-file topics-to-move.json --broker-list "1" --generate

其中,topic-to-move.json 是事先自己写好的一个json文件,里面包含要进行迁移的topic。例如我用来实验的是这样:

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

用 kafka-topics.sh 工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值