不使用dfs到底意味着什么?

ezykj2lf  于 2021-06-03  发布在  Hadoop
关注(0)|答案(5)|浏览(623)

这是我最近在webui上看到的

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占用了一半以上的容量,
我认为这意味着一半的hadoop存储空间被浪费了
在花了无意义的时间搜索之后,我只是格式化namenode,然后从头开始。
然后我将一个巨大的文本文件(约19G)从本地复制到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大约是原始文本文件大小的两倍,而且我配置了2个副本,
我猜使用的dfs是由原始和meta的两个副本组成的。
但我仍然不知道非dfs的使用从何而来,为什么它比dfs的使用占用了那么多的容量。
发生什么事了?我做错了吗?

5uzkadbs

5uzkadbs1#

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

7lrncoxx

7lrncoxx2#

还有一件事。 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 GBsudo tune2fs -l /dev/sdm1 获取“保留块计数”
顺便说一句, tune2fs -m 0.2 /dev/sdm1 调整保留空间。

rseugnpd

rseugnpd3#

正确的简化定义是:“任何不是由hdfs在同一文件系统中写入的数据 dfs.data.dirs . 换句话说,如果你使用 hdfs dfs 命令来复制数据,结果是 dfs.data.dirs 但是,如果您使用常规的 cp 将文件复制到的命令 dfs.data.dirs ,则会变成“非dfs使用”。

wi3ka0sx

wi3ka0sx4#

非dfs将是一些缓存文件,这些文件将由节点管理器存储。您可以检查yarn-site.xml中的yarn.nodemanager.local-dirs属性下的路径
有关详细信息,请参阅default-site.xml。

rt4zxlrg

rt4zxlrg5#

“未使用dfs”按以下公式计算:
non-dfs used=配置的容量-剩余空间-使用的dfs
至少对我来说,这仍然令人困惑。
因为配置的容量=总磁盘空间-保留空间。
所以non-dfs used=(总磁盘空间-保留空间)-剩余空间-dfs used
举个例子。假设我有100GB的磁盘,并且我将保留空间(dfs.datanode.du.reserved)设置为30GB。
在磁盘上,系统和其他文件使用了40GB,dfs使用了10GB。如果运行df-h,您将看到该磁盘卷的可用空间为50gb。
在hdfswebui中,它将显示
未使用dfs=100gb(总计)-30 gb(保留)-10 gb(使用dfs)-50gb(剩余)=10 gb
所以它实际上意味着,您最初配置为为非dfs使用保留30g,为hdfs保留70G。然而,非dfs的使用超过了30g的预留空间,占用了10gb的空间,这应该属于hdfs!
术语“non-dfs used”实际上应该重命名为“non-dfs use占用多少配置的dfs容量”
我们应该停下来试着弄清楚为什么在hadoop中非dfs的使用率如此之高。
一个有用的命令是 lsof | grep delete ,这将帮助您识别已删除的打开文件。有时,hadoop进程(如hive、yarn、mapred和hdfs)可能会引用那些已经删除的文件。这些引用将占用磁盘空间。
du -hsx * | sort -rh | head -10 帮助列出前十大文件夹。

相关问题