首页 > 解决方案 > 一个datanode在hdfs中的使用率达到100%?平衡器不工作

问题描述

我对 Hadoop hdfs 有一些问题。(Hadoop 2.7.3)我有 2 个名称节点(1 个活动,1 个备用)和 3 个数据节点。复制因子为 3。

$  hdfs dfs -df -h /
Filesystem                Size    Used  Available  Use%
hdfs://hadoop-cluster  131.0 T  51.3 T     79.5 T   39%

使用的磁盘是 51T 的-df命令。

$ hdfs dfs -du -h /
912.8 G  /dir1
2.9 T    /dir2

但是用-du命令的磁盘大约是3T。

我发现其中一个数据节点达到了 100% 的使用率。

Live datanodes (3):

datanode1: 
Configured Capacity: 48003784114176 (43.66 TB)
DFS Used: 2614091989729 (2.38 TB)
Non DFS Used: 95457946911 (88.90 GB)
DFS Remaining: 45294174318384 (41.19 TB)
DFS Used%: 5.45%
DFS Remaining%: 94.36%


*****datanode2******
Configured Capacity: 48003784114176 (43.66 TB)
DFS Used: 48003784114176 (43.66 TB)
Non DFS Used: 0
DFS Remaining: 0
DFS Used%: 100%
DFS Remaining%: 0%


datanode3: 
Configured Capacity: 48003784114176 (43.66 TB)
DFS Used: 2615226250042 (2.38 TB)
Non DFS Used: 87496531142 (81.49 GB)
DFS Remaining: 45301001735984 (41.20 TB)
DFS Used%: 5.45%
DFS Remaining%: 94.37%

我的问题是

  1. 我试着做balancer。它似乎可以工作,但所有迭代都没有移动任何块,并且它存在没有任何错误。如何平衡数据节点的磁盘使用量?为什么hdfs balancer命令不移动任何块?
19/11/06 11:27:51 INFO balancer.Balancer: Decided to move 10 GB bytes from datanode2:DISK to datanode3:DISK
19/11/06 11:27:51 INFO balancer.Balancer: chooseStorageGroups for SAME_RACK: overUtilized => belowAvgUtilized
19/11/06 11:27:51 INFO balancer.Balancer: chooseStorageGroups for SAME_RACK: underUtilized => aboveAvgUtilized
19/11/06 11:27:51 INFO balancer.Balancer: chooseStorageGroups for ANY_OTHER: overUtilized => underUtilized
19/11/06 11:27:51 INFO balancer.Balancer: chooseStorageGroups for ANY_OTHER: overUtilized => belowAvgUtilized
19/11/06 11:27:51 INFO balancer.Balancer: chooseStorageGroups for ANY_OTHER: underUtilized => aboveAvgUtilized
19/11/06 11:27:51 INFO balancer.Balancer: Will move 10 GB in this iteration
19/11/06 11:27:51 INFO balancer.Dispatcher: Limiting threads per target to the specified max.
19/11/06 11:27:51 INFO balancer.Dispatcher: Allocating 5 threads per target.

No block has been moved for 5 iterations. Exiting...
  1. 虽然datanode2已满,但节点的状态显示为“In-service”或“Live”或“Normal”。当然,在这种情况下,我无法在 hdfs 中写入新数据。

  2. 结果-df和结果-du相差太大。为什么?

标签: hadoophdfswebhdfsnamenodedatanode

解决方案


要么添加一个新的数据节点,要么减少复制因子。

为什么 ?

让我们将集群中使用最多的节点称为 alpha,将其余两个使用较少的节点称为 beta,gamma。

现在,假设您将“file.txt”从复制因子为 3 的 alpha 节点移动到 beta 节点,这里发生的情况是主文件被移动到 beta 节点,但在 alpha 节点中创建了复制文件。因此,alpha 节点中使用的总空间保持不变。


推荐阅读