【问题标题】:One of datanode's usage reached 100% in hdfs? Balancer is not working一个datanode在hdfs中的使用率达到100%?平衡器不工作
【发布时间】:2020-02-29 13:55:30
【问题描述】:

我对 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%

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

$ 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 的结果相差太大。为什么?

【问题讨论】:

  • 为什么你的数据节点被命名为“namenode”?这只是令人困惑
  • @cricket_007 很抱歉让您感到困惑。这是错字。它们是数据节点,而不是名称节点。我修好了。

标签: hadoop hdfs webhdfs namenode datanode


【解决方案1】:

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

为什么?

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

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

【讨论】:

    猜你喜欢
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多