非DFS使用的含义是什么?

时间:2013-08-28 01:25:38

标签: hadoop hdfs

这是我最近在Web UI上看到的

 Configured Capacity     :   232.5 GB
 DFS Used    :   112.44 GB
 Non DFS Used    :   119.46 GB
 DFS Remaining   :   613.88 MB
 DFS Used%   :   48.36 %
 DFS Remaining%  :   0.26 %

我很困惑,非dfs Used占用了一半以上的容量,

我认为这意味着hadoop存储的一半被浪费了

在花费无意义的时间搜索之后,我只是格式化了namenode,并从头开始。

然后我将一个巨大的文本文件(大约19千兆字节)从本地复制到HDFS(成功)。

现在用户界面说

Configured Capacity  :   232.5 GB
DFS Used     :   38.52 GB
Non DFS Used     :   45.35 GB
DFS Remaining    :   148.62 GB
DFS Used%    :   16.57 %
DFS Remaining%   :   63.92 %
复制前的

,使用的DFS和使用的非DFS均为0.

因为DFS Used大约是原始文本文件大小的两倍,我配置了2个副本,

我猜DFS Used由2份原创和元组成。

但是我仍然不知道非DFS使用的来源是什么,为什么这比DFS使用的要多得多。

发生什么事了?我犯了错误吗?

5 个答案:

答案 0 :(得分:33)

"使用非DFS"计算公式如下:

使用非DFS =已配置容量 - 剩余空间 - 已使用DFS

至少在我看来,它仍然令人困惑。

由于 已配置容量=磁盘空间总量 - 预留空间。

所以非DFS使用=(总磁盘空间 - 保留空间) - 剩余空间 - 使用DFS

让我们举个例子。假设我有100 GB磁盘,并将保留空间(dfs.datanode.du.reserved)设置为30 GB。

在磁盘中,系统和其他文件最多使用40 GB,DFS使用10 GB。如果你运行df -h ,您将看到该磁盘卷的可用空间为50GB。

在HDFS网页界面中,它会显示

非DFS使用= 100GB(总计) - 30 GB(保留) - 10 GB(使用DFS) - 50 GB(剩余)              = 10 GB

所以它实际上意味着,您最初配置为为非dfs使用保留30G,为HDFS保留70 G。然而,事实证明非dfs使用超过30G预留并占用10 GB空间,这应该属于HDFS!

术语"非DFS使用"应该真的被重命名为"非dfs使用了多少配置的DFS容量"

并且应该停止尝试弄清楚为什么非dfs在hadoop中使用如此之高。

一个有用的命令是lsof | grep delete,它可以帮助您识别已删除的打开文件。有时,Hadoop进程(如hive,yarn,mapred和hdfs)可能会引用已经删除的文件。而这些引用将占用磁盘空间。

同样du -hsx * | sort -rh | head -10有助于列出前十大文件夹。

答案 1 :(得分:7)

非DFS使用的是数据节点的文件系统中不在dfs.data.dirs中的任何数据。这将包括日志文件,mapreduce shuffle输出和数据文件的本地副本(如果将它们放在数据节点上)。使用du或类似工具查看占用文件系统空间的内容。

答案 2 :(得分:1)

正确的简化定义是:" HDFS不在与dfs.data.dirs相同的文件系统中写入的任何数据。换句话说,如果您使用hdfs dfs命令复制数据,它最终会在dfs.data.dirs下,但会被视为" DFS使用情况",如果您使用常规{{1} }命令将文件复制到cp,然后它将成为"非DFS使用"。

答案 3 :(得分:1)

还有一件事。
Non DFS used = 100GB(Total) - 30 GB( Reserved) - 10 GB (DFS used) - 50GB(Remaining) = 10 GB
因为ext3 / ext4默认保留5%(参考保留块计数),所以应该是
Non DFS used = 100GB(Total) - 30 GB( Reserved from App) - 5 GB(Reserved from FS) - 10 GB (DFS used) - 50GB(Remaining) = 5 GB

sudo tune2fs -l /dev/sdm1获取"保留的阻止计数"
顺便说一句,tune2fs -m 0.2 /dev/sdm1调整预留空间。

答案 4 :(得分:0)

非dfs将是一些将由节点管理器存储的缓存文件。您可以在yarn-site.xml

中检查yarn.nodemanager.local-dirs属性下的路径

你可以参考 默认yarn-site.xml了解详情。