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吞吐性能问题等。
参考链接