kafka系列-进阶篇之数据迁移

版权声明:如您需要转载该文章,请注明原文网址 https://blog.csdn.net/camel84/article/details/82875490

前言

一个系统随着用户数增加,那么推送到kafka服务器的数据流量会增加。很有可能原有的服务器数量无法支撑更多的流量,接着就需要增加更多的服务来分摊流量。本篇接下来就会介绍,如何操作kafka数据在服务器之间迁移。

方法一:通过增加partition数量

通过增加partition数量的方式来迁移数据的方式是非常简单的,因为新建的partition肯定会均匀的分配到多节点上。首先准备三个kafka broker,创建一个topic,名称为demo1,partition为1,复制数为1,那么这个parition肯定在基本一台broker上。
在这里插入图片描述
一个topic使用一台服务器。如果我们想利用三台服务器来分摊原有的一台服务器,就需要先增加topic的partition数量。需要注意的是partition的数量只能增加,不能减少。

kafka-topics.sh --zookeeper localhost:2181 --alter --topic demo1 --partitions 3

在这里插入图片描述
可以看到kafka帮我们很顺利的,增加了partition数,并平均到了三台broker节点上。

方法二:通过重新分配partition

这次我们只开启一台broker,创建topic分配3个partition和一个复制数。

kafka-topics.sh --zookeeper localhost:2181 --create --topic demo2 --partitions 3 --replication-factor 1

在这里插入图片描述
可以看到3个partition全部在broker 0上。
在这里插入图片描述

生成partition配置文件

这里我们需要先添加一个文件topics.json,里面存放你需要重新分配的partition,注意格式一定要规范
在这里插入图片描述
接着输入以下命令,生成partition的配置文件

kafka-reassign-partitions.sh --zookeeper localhost:2181 --generate --broker-list 0,1,2 --topics-to-move-json-file topics.json

在这里插入图片描述
这里生成的分配方案是kafka建议的,我们可以调整一下broker id 和 partition id,修改成我们需要的方案

重新分配partition

将上面的生成的分配方案保存在reassignment.json文件中,这里我调整了一下broker id和partition id
在这里插入图片描述
执行下面命令后,开始对topic的partition进行重新分配,如果数据量比较大,会很慢。

kafka-reassign-partitions.sh --zookeeper localhost:2181 --execute --reassignment-json-file reassignment.json

在这里插入图片描述

查看任务状态

检查partition的再分配任务是否完成,如果完成,会显示成功。成功后,查看partition情况。

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

在这里插入图片描述

方法三:通过kafka manager进行分配

kafka manager 是yahoo的一个免费开源软件,它提供了一个web端,帮助我们很方便的查看kafka的基本信息和对kafka的一些基本操作
下载地址:https://github.com/yahoo/kafka-manager/releases
上面提供了release的zip包,我没有验证过不同操作系统和kafka版本的兼容性。如果出现兼容性问题,可以下载源代码,自行编译打包。本人在MacOS操作系统上,是自己通过源代码打包的方式安装的。

启动kafka manager

在这里插入图片描述

访问kafka manager页面

在这里插入图片描述

配置kafka参数

在这里插入图片描述

查看kafka信息

在这里插入图片描述

点击一个topic,进入详情

在这里插入图片描述
这里我们就可以通过鼠标,很容易的操作topic的partition了。操作很简单,Manual Partition Assignments和Generate Partition Assignment都可以生成partition分配计划配置。然后,通过Reassign partitions来执行分配。

Generate Partition Assignments

在这里插入图片描述

Manual Partition Assignments

在这里插入图片描述

Reassign partitions

点击Reassign partitions按钮,就会执行你刚才配置的partition计划

总结

文章提供了三种迁移kafka数据的方法,使用kafka manager会比较容易,原理其实也就是我们在方法二使用的几个命令,生成和执行分配partition计划。

猜你喜欢

转载自blog.csdn.net/camel84/article/details/82875490
今日推荐