在 hadoop 中释放“未使用 DFS”的空间

Posted

技术标签:

【中文标题】在 hadoop 中释放“未使用 DFS”的空间【英文标题】:Freeing up "Non-DFS used" space in hadoop 【发布时间】:2015-07-28 10:19:27 【问题描述】:

我正在尝试将我们的数据加载到 hadoop hdfs 中。经过一些测试运行后,当检查 hadoop web ui 时,我意识到标题“Non-DFS used”下消耗了很多空间。事实上,“Non-DFS used”不仅仅是“DFS used”。因此,几乎一半的集群都被非 DFS 数据消耗。

即使在重新格式化 namenode 并重新启动后,这个“非 DFS”空间也没有被释放。

我也无法找到存储此“非 DFS”数据的目录,因此我可以手动删除这些文件。

我在网上阅读了许多被困在同一问题上的人的帖子,但没有一个得到明确的答案。

清空这个“非DFS”空间有那么难吗?还是我不应该删除它?我怎样才能释放这个空间?

【问题讨论】:

【参考方案1】:

在HDFS中,Non-DFS是datanode中未被hdfs数据占用的存储。

查看数据节点hdfs-site.xml,属性中设置的目录 dfs.data.dirdfs.datanode.data.dir 将用于 DFS。数据节点中所有其他使用的存储将被视为非 DFS 存储。

您可以通过从 datanode 机器上删除任何不需要的文件来释放它,例如 hadoop 日志、任何与 hadoop 无关的文件(磁盘上的其他信息)等。使用任何 hadoop 命令都无法做到这一点。

使用的非 DFS 使用以下公式计算,

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

在下面找到类似的问题,

What exactly Non DFS Used means?

【讨论】:

好的,这个数据是什么?日志文件?还有什么被视为非 DFS 数据的吗?所以我应该删除namenode和datanode中的所有日志。另外我只是猜测,如果 Hadoop Web UI 可以说有 19.6GB 的“非 DFS”数据,那么它是在以某种特定的方式测量它,也就是说,它必须在某些目录中测量它? ? 数据节点存储在哪个磁盘上,检查该磁盘是否有其他文件。它可能是文件系统(操作系统文件)、日志、其他信息等。它在公式中给出的所有数据节点中测量。【参考方案2】:

我有一段时间面临同样的问题,我的非 DFS 使用量已达到约 13TB!!!我为 YARN、TEZ、MR2 等尝试了许多重新配置,但没有成功。相反,使用量一直在增加,我的集群使用率几乎达到了 90%。这反过来又导致在运行我的脚本和重新尝试(失败)配置系统时出现很多顶点故障。

虽然对我有用(有趣的故事),只是简单地重新启动 Ambari 中的所有数据节点!!!它将非 DFS 使用量从 13TB 减少到略高于 6TB。我的资源管理器已经运行了大约 160 天,我猜测重新启动数据节点可能刚刚清除了日志文件。

【讨论】:

我面临同样的问题。除了重启HDFS,有什么解决办法吗?

以上是关于在 hadoop 中释放“未使用 DFS”的空间的主要内容,如果未能解决你的问题,请参考以下文章

Oracle move和shrink释放高水位空间

怎样释放JAVA程序运行中所用的内存

关于C语言free函数的问题

4 亿 IPv4 地址空间即将释放

string类的写时拷贝

如何理解闭包?