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

太过爱你忘了你带给我的痛 2022-05-10 10:26 1657阅读 0赞

前言

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

方法一:通过增加partition数量

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

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

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

方法二:通过重新分配partition

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

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

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

生成partition配置文件

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

  1. 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进行重新分配,如果数据量比较大,会很慢。

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

在这里插入图片描述

查看任务状态

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

  1. 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计划。

发表评论

表情:
评论列表 (有 0 条评论,1657人围观)

还没有评论,来说两句吧...

相关阅读

    相关 javascript变量

    仔细的看了看<javascript权威指南>,算笔记吧 1、关于变量的声名 大家都知道javascript是可以隐式声名变量的。但要注意,隐式声名变量总是被创建为全局变

    相关 kafka系列-消费组

    前言 消费组是kafka一个非常有意思的设计。在高并发方面,可以使用多个台服务器放在同一个消费组中,就可以保证所有的消费者拉取的消费不会重复并且完整,这样就可以提高消费者

    相关 Kafka数据迁移

    1.概述 Kafka的使用场景非常广泛,一些实时流数据业务场景,均依赖Kafka来做数据分流。而在分布式应用场景中,数据迁移是一个比较常见的问题。关于Kafka集群数据如何