HDFS数据均衡的方法

应用场景:集群数据在节点上分布不均匀,会影响节点的健康和集群的效率, 数据不均衡一般是多种原因造成的,一般来说,可能是大批量的write & deltete操作.我们可以使用Disk balancer工具来使得集群的数据节点磁盘存储达到均衡,大约方差是10%,就表示成功了.

Disk balancer的定义: 是一个命令行工具. 将datanode的磁盘上的数据均匀分布. 和Balnacer工具不同,后者是作用于整个集群的.这个工具可以将block从一个disk 移动到另外一个disk.Disk Balancer 执行一个plan 文件在datanode上 . plan里面包含了多少data会被移动(在两个disk之间).

使用Disk Balancer的步骤:

1、DB在default模式下没有开启,通过修改dfs.disk.balancer.enabled参数,在hdfs-site.xml配置文件里面.用来打开这个开关.5.0在界面可以修改,4.2需要手动在配置文件添加.

2、在datanode上运行plan文件,抽取disk的信息.使用命令行
hdfs diskbalancer -plan node1.mycluster.com来执行disk balancer.
使用df -th 可以看到disk不均衡.
图片alt

3、命令结果保存在如下两个文件里面:nodename.before.json, nodename.plan.json.nodename.before.json, 从namenode读取cluster的状态.包含了datanodes和volumes的具体信息.nodename.plan.json.包含了节点的plan文件. 包含了很多步骤steps.每一个step包含很多的文件的move操作(datanode内部,没有跨datanode)
图片alt

4、运行plan.json文件.

hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.json
图片alt

5、查看运行结果. 运行df -th 发现 节点的 disk已经均衡了.
图片alt

posted @ 2022-12-07 15:29  我爱编程到完  阅读(221)  评论(0编辑  收藏  举报