HDFS配置容量高于磁盘容量

时间:2018-02-09 17:05:40

标签: hadoop hdfs cloudera

我在Centos上有一个带有Cloudera Express 5.11的11节点集群。最初它只由7个节点组成;稍后又添加了4个节点。每个节点的磁盘容量相同: 5.4 TB

我遇到的问题是hdfs dfsadmin -report命令显示错误的磁盘使用值,尤其是配置容量。我拥有的值在前7个节点中 6.34 TB ,在最后4个节点中 21.39 TB

例如,在一个节点中,我有以下报告:

Decommission Status : Normal
Configured Capacity: 23515321991168 (21.39 TB)
DFS Used: 4362808995840 (3.97 TB)
Non DFS Used: 14117607018496 (12.84 TB)
DFS Remaining: 3838187159552 (3.49 TB)
DFS Used%: 18.55%
DFS Remaining%: 16.32%
Configured Cache Capacity: 2465202176 (2.30 GB)
Cache Used: 0 (0 B)
Cache Remaining: 2465202176 (2.30 GB)
Cache Used%: 0.00%
Cache Remaining%: 100.00%

df文件夹上运行dfs.data.dir命令向我显示DFS Used值(不是百分比)是正确的,但其他值则偏离了。我已经读过HDFS可能会显示没有最新的值,但是我已经看到了相同的值,有些日子甚至在重新启动所有服务和所有机器之后。

最让我烦恼的是:

  1. 配置容量高于真实容量(当我只有5 TB时,它如何推断21 TB?)
  2. 我有两组不同的值,分别是
  3. 这些价​​值观可能是什么原因?有没有办法解决它们?

    PS:我之所以这么说,原因是错误的值,HDFS低估了DFS Used%,因此无法重新平衡节点中的文件。实际上,我发布了该值的节点有:

    • DFS Used:~4 TB(正确)
    • DFS Used%:〜19%(错误)

    每个其他节点都有:

    • DFS Used:~2 TB(正确)
    • DFS Used%:范围从11%到28%(错误)

    这使得被控制的节点的DFS Used%低于平均值,因此HDFS的平衡器推断出节点不应该重新平衡。

    PS2:我注意到的一件事是第一组节点有Centos 6.9,而第二组节点有Centos 6.8。这会以某种方式对问题做出贡献吗?

1 个答案:

答案 0 :(得分:1)

  

这些价​​值观可能是什么原因?

经过一些研究,似乎这个问题发生在使用新资源(即新磁盘或新节点)更新集群时,因为HDFS更新了所涉及的Datanode的配置容量以及所有涉及的Datanode的总容量(即,当我们升级前7个节点的磁盘时,每个节点的容量成为集群的总容量;当我们添加4个节点时,每个新节点的容量成为新节点的总容量节点)。这可能是由于Cloudera经理吗?可能(这是我的猜测),但我没有证据。

  

有没有办法解决它们?

我已经阅读过Hadoop的Java代码,以了解节点的价值所在。配置容量取自,它似乎来自Namenode的命名空间映像(这是一个二进制文件,而AFAIK,它不可编辑)。

我最终做的是停用不平衡节点(触发其余节点上的块的复制),删除此节点上的HDFS数据,重新调试它并重新平衡数据。它不是我想要的解决方案,但至少它正确地重新平衡了我的数据。