我在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可能会显示没有最新的值,但是我已经看到了相同的值,有些日子甚至在重新启动所有服务和所有机器之后。
最让我烦恼的是:
这些价值观可能是什么原因?有没有办法解决它们?
PS:我之所以这么说,原因是错误的值,HDFS低估了DFS Used%
,因此无法重新平衡节点中的文件。实际上,我发布了该值的节点有:
DFS Used
:~4 TB(正确)DFS Used%
:〜19%(错误)每个其他节点都有:
DFS Used
:~2 TB(正确)DFS Used%
:范围从11%到28%(错误)这使得被控制的节点的DFS Used%
低于平均值,因此HDFS的平衡器推断出节点不应该重新平衡。
答案 0 :(得分:1)
这些价值观可能是什么原因?
经过一些研究,似乎这个问题发生在使用新资源(即新磁盘或新节点)更新集群时,因为HDFS更新了所涉及的Datanode的配置容量以及所有涉及的Datanode的总容量(即,当我们升级前7个节点的磁盘时,每个节点的容量成为集群的总容量;当我们添加4个节点时,每个新节点的容量成为新节点的总容量节点)。这可能是由于Cloudera经理吗?可能(这是我的猜测),但我没有证据。
有没有办法解决它们?
我已经阅读过Hadoop的Java代码,以了解节点的价值所在。配置容量取自,它似乎来自Namenode的命名空间映像(这是一个二进制文件,而AFAIK,它不可编辑)。
我最终做的是停用不平衡节点(触发其余节点上的块的复制),删除此节点上的HDFS数据,重新调试它并重新平衡数据。它不是我想要的解决方案,但至少它正确地重新平衡了我的数据。