背景:
之前hdfs磁盘使用率已经达到了80%以上,所以对每台机器增加了3块1TB的硬盘,加完硬盘后立马对集群进行了一次Balancer,各个节点数据总量确实得到均衡,但是各个磁盘数据并没有想象中均匀分布,新磁盘的数据很少,大部分数据还是分布在老磁盘上,就像下边
[hdfs@hadoop ~]$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 26G 12G 70% /
tmpfs 32G 8.0K 32G 1% /dev/shm
/dev/vdb1 1008G 738G 220G 78% /data
/dev/vdc1 99G 11G 83G 12% /data2
/dev/vdd1 2.0T 953G 961G 50% /data3
/dev/vde 1008G 174G 784G 19% /data4
/dev/vdf 1008G 175G 782G 19% /data5
/dev/vdg 1008G 171G 787G 18% /data6
查阅文档,Balancer均衡是属于节点级别的,它不管节点下磁盘的数据分布,所以想要磁盘数据进行均衡就需要使用磁盘均衡器diskbalancer;具体步骤如下
1.创建均衡任务并生成计划任务配置文件
[hdfs@hadoop ~]$ hdfs diskbalancer -plan hadoop
19/01/14 21:14:14 INFO planner.GreedyPlanner: Starting plan for Node : hadoop:50020
19/01/14 21:14:14 INFO planner.GreedyPlanner: Disk Volume set 39a804ea-86f0-4da4-af15-b869bca20901 Type : DISK plan completed.
19/01/14 21:14:14 INFO planner.GreedyPlanner: Compute Plan for Node : hadoop:50020 took 16 ms
19/01/14 21:14:14 INFO command.Command: Writing plan to : /system/diskbalancer/2019-Jan-14-21-14-13
2.查看配置文件
[hdfs@hadoop ~]$ hdfs dfs -ls /system/diskbalancer/2019-Jan-14-21-14-13
Found 2 items
-rw-r--r-- 3 hdfs supergroup 7657 2019-01-14 21:14 /system/diskbalancer/2019-Jan-14-21-14-13/hadoop.before.json
-rw-r--r-- 3 hdfs supergroup 2460 2019-01-14 21:14 /system/diskbalancer/2019-Jan-14-21-14-13/hadoop.plan.json
3.启动均衡任务
hdfs diskbalancer -execute /system/diskbalancer/2019-Jan-14-21-14-13/hadoop.plan.json
4.查看状态
[hdfs@hadoop ~]$ hdfs diskbalancer -query hadoop:50020
19/01/14 21:17:45 INFO command.Command: Executing "query plan" command.
Plan File: /system/diskbalancer/2019-Jan-14-21-14-13/hadoop.plan.json
Plan ID: 6adb6a6e19fa29731e71ec5e3b05d006759a526b
Result: PLAN_UNDER_PROGRESS
完成后的状态,耗时大约18Hours
[hdfs@hadoop ~]$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 26G 12G 70% /
tmpfs 32G 8.0K 32G 1% /dev/shm
/dev/vdb1 1008G 412G 545G 44% /data
/dev/vdc1 99G 11G 83G 12% /data2
/dev/vdd1 2.0T 790G 1.1T 42% /data3
/dev/vde 1008G 345G 612G 37% /data4
/dev/vdf 1008G 364G 593G 39% /data5
/dev/vdg 1008G 364G 593G 39% /data6
[hdfs@hadoop ~]$ hdfs diskbalancer -query hadoop:50020
19/01/15 13:23:33 INFO command.Command: Executing "query plan" command.
Plan File: /system/diskbalancer/2019-Jan-14-21-14-13/hadoop.plan.json
Plan ID: 6adb6a6e19fa29731e71ec5e3b05d006759a526b
Result: PLAN_DONE
每个需要均衡的节点都要进行如上操作