文档编写目的
Kafka的数据目录可以配置一个或多个,通常这些目录是分布在不同的磁盘上用于提高K集群的读写性能,同时也可以提升消息的存储空间。
实际的生产环境中随着消息量的增加,Kafka存储的消息量过大,导致磁盘空间爆满,此时在不扩容Broker的情况下,我们通过对已有节点挂载磁盘的方式扩容Kafka的存储。在扩容存储后会发现已有Topic的Partition并不会自动均衡到新的磁盘上,依然没有缓解磁盘爆满的情况。而新建Topic时以磁盘为单位,在Partition数量最少的磁盘上创建Partition目录。上述的情况均会导致Kafka数据在磁盘之间分布不均的问题。
本篇文章Fayson主要介绍如何实现磁盘之间Parttion的迁移,从而实现Kafka Broker节点磁盘数据Balance,阅读本文前可以先查看如下视频:
《如何在一个Kafka Broker的log.dir中移动partition数据》
- 测试环境:
1.Redhat7.2
2.采用root用户操作
3.CM为5.16.2,CDH为5.14.4
4.Kafka版本为2.2.0
5.Kafka未启用Kerberos和Sentry
Kafka磁盘扩容
1.扩容前Kafka的数据目录。
通过CM的Kafka配置搜索log.dirs可以看到当前Kafka的数据目录只有/var/local/kafka/data这一个。
2.扩容后数据目录说明
通过CM,进入Kafka,点击配置,输入log.dirs进行搜索,然后添加一个目录/data0/kafka/data,点击保存确认,然后根据提示重启。这样进行磁盘目录的扩容。
3.扩容后创建一个新的Topic进行说明
使用如下命令创建一个新的Topic
[root@cdh01 data]# kafka-topics --create --zookeeper cdh01<