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

前言

一个系统随着用户数增加,那么推送到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计划。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
kafka是一个分布式的流处理平台,它可以处理和存储大规模的实时数据流。kafka-run-class是kafka提供的一个脚本工具,用于在命令行中执行指定的类。kafka.tools.GetOffsetShell是用于获取指定topic在指定时间点的偏移量信息的工具。 具体来说,kafka.tools.GetOffsetShell通过指定topic、时间点和broker列表来获取该topic在指定时间点的偏移量。它的用法类似于以下命令: ``` bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic <topic> --time <timestamp> --broker-list <broker-list> --partitions <partitions> ``` 其中,<topic>是要查询的topic名称,<timestamp>是要查询的时间点,<broker-list>是broker的地址列表,<partitions>是要查询的分区编号。该命令会返回指定topic在指定时间点的偏移量信息。 另外,kafka.tools.ConsumerOffsetChecker是kafka提供的另一个工具,用于检查消费者的偏移量信息。它可以通过指定zookeeper连接、消费者组和topic来获取消费者的偏移量信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kafka监控命令kafka-run-class.sh查看消费了多少条数据](https://blog.csdn.net/m0_37739193/article/details/73849523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [kafka_2.9.2-0.8.2.1.tgz](https://download.csdn.net/download/shy_snow/9372309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值