CDH使用Disk Balancer平衡磁盘HDFS数据​

原因:​

CDH  HDFS集群机器上有很多块存储盘,磁盘存储空间是一样的,数据写入不均。从 CDH 5.8.2 开始,Cloudera Manager提供了一个全面的存储容量管理解决方案,可以跨节点 (Balancer)、存储类型(Mover)和单个DataNode中的磁盘(磁盘平衡器)。​

启用磁盘平衡器​

HDFS配置中搜索safety valve,在HDFS服务高级配置代码段(安全阀)创建名称为dfs.disk.balancer.enabled,值为true的键值对。​

注:​

  1. 配置以上参数要重启hdfs的过期配置​
  2. 所在的机器要开启hdfs的用户​vim /etc/passwd​
    把hdfs:x:995:992:Hadoop HDFS:/var/lib/hadoop-hdfs:/sbin/nologin改为hdfs:x:995:992:Hadoop HDFS:/var/lib/hadoop-hdfs:/bin/bash​
  3. sudo su – hdfs用这个命令进入hdfs用户操作,不然提示没有权限​

生成磁盘平衡器任务​

1、假设目前有disk1和disk2两个磁盘,其占用率分别为:​

# df -h
/var/disk1 5.8G 3.6G 1.9G 66% /mnt/disk1
/var/disk2 5.8G 13M 5.5G 1% /mnt/disk2

2、显然上述两个磁盘需要进行磁盘平衡,假设要平衡的主机名称为lei-dn-3.example.org,通过如下命令可以生成磁盘平衡任务:​

$ hdfs diskbalancer -plan lei-dn-3.example.org
16/08/19 18:04:01 INFO planner.GreedyPlanner: Starting plan for Node : lei-dn-3.example.org:20001
16/08/19 18:04:01 INFO planner.GreedyPlanner: Disk Volume set 03922eb1-63af-4a16-bafe-fde772aee2fa Type : DISK plan completed.Th
16/08/19 18:04:01 INFO planner.GreedyPlanner: Compute Plan for Node : lei-dn-3.example.org:20001 took 5 ms
16/08/19 18:04:01 INFO command.Command: Writing plan to : /system/diskbalancer/2016-Aug-19-18-04-01

3、默认生成任务的目录为/system/diskbalancer/{时间}/{机器名}.plan.json。​

注意:任务生成的目录是在HDFS的文件系统内,而不是本机目录。

通过如下命令可以查询生成的JSON文件:​

$ hdfs dfs -ls /system/diskbalancer/2016-Aug-19-18-04-01
Found 2 items
-rw-r--r-- 3 hdfs supergroup 1955 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.before.json
-rw-r--r-- 3 hdfs supergroup 908 2016-08-19 18:04 /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json

-ls后面跟着的是上一步生成计划的时间,可以看到有格式如{机器名}.plan.json文件夹(不是一个文件)。​

执行磁盘平衡任务​

$ hdfs diskbalancer -execute /system/diskbalancer/2016-Aug-17-17-03-56/172.26.10.16.plan.json
16/08/17 17:22:08 INFO command.Command: Executing "execute plan" command

此命令将磁盘平衡任务提交给 DataNode,后者会在后台 BlockMover 线程中执行。​

查询磁盘平衡任务是否完成​

# hdfs diskbalancer -query lei-dn-3.example.org
16/08/19 21:08:04 INFO command.Command: Executing "query plan" command.
Plan File: /system/diskbalancer/2016-Aug-19-18-04-01/lei-dn-3.example.org.plan.json
Plan ID: ff735b410579b2bbe15352a14bf001396f22344f7ed5fe24481ac133ce6de65fe5d721e223b08a861245be033a82469d2ce943aac84d9a111b542e6c63b40e75
Result: PLAN_DONE

输出 (PLAN_DONE) 表示磁盘平衡任务已完成。为验证磁盘平衡器的有效性,可再次使用df -h命令查看两个本地磁盘之间的数据分布情况。​

# df -h
Filesystem Size Used Avail Use% Mounted on
/var/disk1 5.8G 2.1G 3.5G 37% /mnt/disk1
/var/disk2 5.8G 1.6G 4.0G 29% /mnt/disk2

默认磁盘平衡器达到配置文件中的重新平衡阈值,则视为数据已平衡完毕。默认阈值为10.0,即磁盘空间占用偏差在10%以内,则认为磁盘平衡任务已完成。​

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值