kafka系列-进阶篇之数据迁移 太过爱你忘了你带给我的痛 2022-05-10 10:26 1548阅读 0赞 # 前言 # 一个系统随着用户数增加,那么推送到kafka服务器的数据流量会增加。很有可能原有的服务器数量无法支撑更多的流量,接着就需要增加更多的服务来分摊流量。本篇接下来就会介绍,如何操作kafka数据在服务器之间迁移。 # 方法一:通过增加partition数量 # 通过增加partition数量的方式来迁移数据的方式是非常简单的,因为新建的partition肯定会均匀的分配到多节点上。首先准备三个kafka broker,创建一个topic,名称为demo1,partition为1,复制数为1,那么这个parition肯定在基本一台broker上。 ![在这里插入图片描述][20181201005926413.png] 一个topic使用一台服务器。如果我们想利用三台服务器来分摊原有的一台服务器,就需要先增加topic的partition数量。需要注意的是partition的数量只能增加,不能减少。 kafka-topics.sh --zookeeper localhost:2181 --alter --topic demo1 --partitions 3 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70] 可以看到kafka帮我们很顺利的,增加了partition数,并平均到了三台broker节点上。 # 方法二:通过重新分配partition # 这次我们只开启一台broker,创建topic分配3个partition和一个复制数。 kafka-topics.sh --zookeeper localhost:2181 --create --topic demo2 --partitions 3 --replication-factor 1 ![在这里插入图片描述][20181201013912492.png] 可以看到3个partition全部在broker 0上。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 1] ## 生成partition配置文件 ## 这里我们需要先添加一个文件topics.json,里面存放你需要重新分配的partition,注意格式一定要规范 ![在这里插入图片描述][20181201021334359.png] 接着输入以下命令,生成partition的配置文件 kafka-reassign-partitions.sh --zookeeper localhost:2181 --generate --broker-list 0,1,2 --topics-to-move-json-file topics.json ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 2] 这里生成的分配方案是kafka建议的,我们可以调整一下broker id 和 partition id,修改成我们需要的方案 ## 重新分配partition ## 将上面的生成的分配方案保存在reassignment.json文件中,这里我调整了一下broker id和partition id ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 3] 执行下面命令后,开始对topic的partition进行重新分配,如果数据量比较大,会很慢。 kafka-reassign-partitions.sh --zookeeper localhost:2181 --execute --reassignment-json-file reassignment.json ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 4] ## 查看任务状态 ## 检查partition的再分配任务是否完成,如果完成,会显示成功。成功后,查看partition情况。 kafka-reassign-partitions.sh --zookeeper localhost:2181 --verify --reassignment-json-file reassignment.json ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 5] # 方法三:通过kafka manager进行分配 # kafka manager 是yahoo的一个免费开源软件,它提供了一个web端,帮助我们很方便的查看kafka的基本信息和对kafka的一些基本操作 下载地址:[https://github.com/yahoo/kafka-manager/releases][https_github.com_yahoo_kafka-manager_releases] 上面提供了release的zip包,我没有验证过不同操作系统和kafka版本的兼容性。如果出现兼容性问题,可以下载源代码,自行编译打包。本人在MacOS操作系统上,是自己通过源代码打包的方式安装的。 ## 启动kafka manager ## ![在这里插入图片描述][2018120102215837.png] ## 访问kafka manager页面 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 6] ## 配置kafka参数 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 7] ## 查看kafka信息 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 8] ## 点击一个topic,进入详情 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 9] 这里我们就可以通过鼠标,很容易的操作topic的partition了。操作很简单,Manual Partition Assignments和Generate Partition Assignment都可以生成partition分配计划配置。然后,通过Reassign partitions来执行分配。 ### Generate Partition Assignments ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 10] ### Manual Partition Assignments ### ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 11] ### Reassign partitions ### 点击Reassign partitions按钮,就会执行你刚才配置的partition计划 # 总结 # 文章提供了三种迁移kafka数据的方法,使用kafka manager会比较容易,原理其实也就是我们在方法二使用的几个命令,生成和执行分配partition计划。 [20181201005926413.png]: /images/20220510/30237f9b094c4beeaaf97fc154b97c88.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70]: /images/20220510/ef51847f0fec421284e384225ef285c1.png [20181201013912492.png]: /images/20220510/9611c04c9948462292abfc4db0d4ae2f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 1]: /images/20220510/a993c1fe23824343a330e733f53e7268.png [20181201021334359.png]: /images/20220510/7d15c1b0390e4027b00adf2d082d5be5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 2]: /images/20220510/35ac453d3b3148018dbe32def8566d41.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 3]: /images/20220510/820c165cad624ab48a628cbffd38fc24.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 4]: /images/20220510/34a8a6214edb4427822ef6c792975cd9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 5]: /images/20220510/c64de865961540c7a9a0ccbe6c2dd566.png [https_github.com_yahoo_kafka-manager_releases]: https://github.com/yahoo/kafka-manager/releases [2018120102215837.png]: /images/20220510/4ff54bbe5d164499b011ef6682c9804a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 6]: /images/20220510/42907aaa5c454acfada247bef988b122.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 7]: /images/20220510/857fa3f894d14e7fb488a264d122cb7a.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 8]: /images/20220510/a9c100c2bc3b4254ba2cf76b18f89ea0.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 9]: /images/20220510/a8ea905e646a4627a39398bd0e99d429.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 10]: /images/20220510/1624aa130ffd4e9baa063e7cd41cb078.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NhbWVsODQ_size_16_color_FFFFFF_t_70 11]: /images/20220510/887b012a02224b049b1933680695f863.png
还没有评论,来说两句吧...