栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kafka存储扩容以及分区重分配

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kafka存储扩容以及分区重分配

一、背景

最近生产环境Kafka数据暴增,导致原来磁盘存储不够用,现需对生产环境Kafka存储目录进行扩容。

二、执行方案 1、存储目录扩容

先进行挂载磁盘操作,将挂载的磁盘数据目录配置到Kafka配置文件中。
假设现在加了500G的磁盘用于给Kafka数据目录存储扩容,磁盘已经挂载到了/data 目录。

  1. 首先在 /data 目录下建立新的Kafka数据存储目录
mkdir -p /data/kafka/kafka-logs
  1. 修改Kafka配置文件
vi config/server.properties
log.dirs=/opt/kakfa/kafka-logs,/data/kafka/kafka-logs

配置文件定位到log.dirs配置项,增加新数据目录,并以逗号分隔;

  1. 重启Kafka节点服务:
    注意: 使用bin/kafka-server-stop.sh 停止命令,不要直接杀进程,否则内存区的数据未写到磁盘,可能导致数据丢失。

  2. 重启以后已建立且在使用的topic分区还是分布在旧存储目录上,不会重新负载到新的存储目录,只有新建的topic才会使用新的存储目录进行存储,因此需进行旧分区的重新分配。

  3. 生成Kafka分区重分配方案:
    要想使旧的topic分区也能均匀分布到新加的数据目录,可使用分区重分配。

2、生产Kafka分区重分配方案

1)、使用如下命令生成分区重分配方案:

kafka-reassign-partitions --zookeeper localhost:2181 --generate --topics-to-move-json-file topic-reassign.json --broker-list 0

其中topic-reassign.json文件可指定生成重分配方案的topic :

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

2)、执行以后kafka-reassign-partitions帮我们生成了当前的分区副本的分布方案,以及建议的分区副本的分布方案:

如图上(本地环境执行的,只有一个分区一个副本,因此重分配前后是一样的,生产环境执行以后会根据负载等情况生成新的重分配方案)。

3)、当前分区副本的分布方案:

Current partition replica assignment
{"version":1,"partitions":[{"topic":"test","partition":0,"replicas":[0],"log_dirs":["any"]}]}

4)、建议的分区副本的分布方案:

Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"test","partition":0,"replicas":[0],"log_dirs":["any"]}]}

5)、记得将Current partition replica assignment的备份保存,用于后期回滚操作。

6)、我们将Proposed partition reassignment configuration保存到另外一个json文件中(比如reassign-partitions.json),这个就是系统建议的一个可行性分区重分配方案。注意,这里并没有真正执行重分配的动作。

3、执行Kafka分区重分配:

1)使用reassign-partitions.json重分配方案,正式执行分区重分配:

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


2)检查重分配操作的进度:

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


3)此时可查看topic的partition分布情况,看重新分配以后的分区分布

kafka-topics --zookeeper localhost:2181 --topic test --describe

去查看新存储目录,分区已被分配到新存储目录下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678125.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号