0%

Kafka Broker节点磁盘数据Balance

Kafka Broker节点磁盘数据Balance


背景

Kafka 的数据目录可以配置一个或多个,通常分区目录是分布在不同的磁盘上用于提高 Kafka 集群的读写性能,同时也可以提升消息的存储空间。

在一些特殊场景下,存在大 topic 集中在某个磁盘上,导致该磁盘容易出现容量问题

因此需要在 Broker 节点上做下分区

迁移

这里假设 Kafka broker 有两个数据目录 /data/kafka_logs, /data1/kafka_logs

先将 Kafka 进程暂停

将 Topic的 Parttion 从 /data1/kafka_logs 目录迁移 /data/kafka_logs 目录下

1
mv test-0/ test-1/ /data/kafka_logs

修改 /data1/kafka_logs 目录下 recovery-point-offset-checkpoint 文件内容

修改后,把第二行的分区数减2,因为迁移走了两个分区。然后把下面的test 1和test 2这两行删除

修改 /data/kafka_logs 目录下 recovery-point-offset-checkpoint 文件内容

这里加了2个分区,所以把分区数+2,然后最下面添加了test 1和test 2这两行,后面的数字跟 /data1/kafka_logs/recovery-point-offset-checkpoint 修改前的保持一致。

启动Kafka服务

总结

1.在操作期间需要停止Kafka的服务才可以进行。

2.上面迁移步骤是做了一个broker上的迁移。如果其他broker也需要迁移,可以同样步骤进行操作,需要注意的是,每个broker上的partition不一定是固定的,需要根据实际情况进行操作。

3.partition的迁移这里实际上做了物理的目录迁移之后,修改了迁移前和迁移后的磁盘目录下的recovery-point-offset-checkpoint和replication-offset-checkpoint这两个文件。相应的把文件中记录的总partition数和具体的每个partition的记录进行修改就可以了。

4.在只扩容Kafka存储空间的情况下,建议优先对Kafka Broker的磁盘做Balance,而后再创建新的Topic,否则新建Topic的Partition会根据分配规则都创建到新挂载的磁盘上,导致数据不均衡及Topic吞吐性能问题等。


参考链接