HDFS Disk Balancer – Learn how to Balance Data on DataNode

Contents

  • 1. Objective
  • 2. HDFS Disk Balancer
  • 3. Disk Balancer的机制
  • 4. HDFS Intra-DataNode Disk Balancer
  • 5. HDFS Disk Balancer的功能
    • 5.1. Data spread report
      • a. Volume data density or Intra-node data density
      • b. Reports
  • 6. Conclusion

1. Objective

详细介绍 Hadoop HDFS Disk Balancer,包括Disk balancer是什么,Disk balancer基本工作原理, Intra-data node balancer的需求是什么,disk balancer的能力是什么?

2. HDFS Disk Balancer

在datanode中,大量的写、删除操作以及磁盘的位置会造成数据不均衡存放,导致很明显的数据倾斜。

Diskbalancer是HDFS下的一个命令行工具,用于datanode做数据均衡处理,实现数据均衡存储。对于特定的一个datanode,它把blocks从一个disk移动到另一个。

Disk balancer 不同于 HDFS Balancer。HDFS Balancer 用于分析data block存放位置和均衡不同datanodes之间的data block,只负责自身的Inter, Non-Intra, DataNode 倾斜。

 

3. Disk Balancer的机制

Hadoop HDFS Disk balancer 通过创建一个plan (一系列语句),然后在datanode上执行。这个plan定义了在两个disks之间有多少数据需要移动,包括很多移动步骤。在移动步骤定义了source disk, destination disk 和移动的字节数。 disk balancer默认是不生效的,需要在hdfs-site.xml 修改 dfs.disk.balancer.enabledtrue 才可以有效。

 

4. HDFS Intra-DataNode Disk Balancer

在 HDFS 写入数据时, datanode 使用 volume 选择策略去确定disk。Volume 是HDFS 术语,每个目录就是一个volume。Volume 选择选择两个策略:

  • Round-robin: 按照在不同的磁盘之间数据均衡存放的原则
  • Available space: 按照最多剩余disk (按照百分比)去决定写数据到那个

HDFS Disk Balancing Policies - Round Robin, Available Space

默认DataNode使用 round-robin 策略。 在一个长期运行的cluster中,由于大文件的删除和新增,将会出现很明显的不均衡的datanodes。即使使用 available space Volume选择策略,依然会导致disk I/O低效。

例如,当新增空disk时,会造成所有的数据都会写到新磁盘。这期间,其他磁盘就一直空闲。这造成了新磁盘写瓶颈。

Apache Hadoop 社区开发一些离线的脚步来减少不均衡问题。HDFS-1312 也引入了online的 disk balancer,将会重新均衡 运行中的datanode的volume。

5. HDFS Disk Balancer的功能

5.1. Data spread report

通过一些度量指标,来计算在节点上的volume情况。

a. Volume data density 或 Intra-node data density

这个指标用于计算出在一个节点上有多少数据和什么是合理的存储。

Ideal storage (合理存储)= total used % total capacity
Volume data density= ideal storage – dfsUsedRatio

如果volume data density是正值,说明disk是正常的;如果是负值,说明disk是过度使用。

 

b. reports

一旦有 volume data density 和 node data density, disk balancer 现在就去均衡前20个有倾斜的节点。

6. Conclusion

Diskbalancer是用于datanode内部的数据均衡处理,保证一个datanode所有disk上的数据均衡分布。Round-robinAvailable space 是实现磁盘均衡的disk选择策略