> HDFS现在包括(在CDH 5.8.2及更高版本中提供)一种用于跨节点移动数据的综合存储容量管理方法。
在hdfs中,datanode将数据块分散到本地文件系统目录中,可以使用hdfs-site.xml中的dfs.datanode.data.dir指定该目录。在典型的安装中,每个目录(在HDFS术语中称为卷)位于不同的设备上(例如,在单独的HDD和SSD上)。在将新块写入HDFS时,datanode使用卷选择策略来选择块的磁盘。目前支持两种这样的策略类型:循环或可用空间(HDFS-1804)。
简而言之,如图1所示,循环策略将新块平均分布在可用磁盘上,而可用空间策略则优先将数据写入可用空间最大的磁盘(按百分比)。
默认情况下,datanode使用基于循环的策略来写入新块。但是,在长时间运行的集群中,由于HDFS中的大量文件删除或通过磁盘热交换功能添加新的数据节点磁盘等事件,数据节点仍然有可能创建显著不平衡的卷。即使使用基于空间的可用卷选择策略,卷不平衡仍然会导致磁盘I/O效率降低:例如,在此期间,每次新写入都将转到新添加的空磁盘,而其他磁盘处于空闲状态,从而在新磁盘上造成瓶颈。
最近,ApacheHadoop社区开发了服务器离线脚本(如inhdf-1312、dev@mail list和github所讨论的那样),以缓解数据不平衡问题。但是,由于在HDFS代码