【问题标题】:Deleting files from HDFS does not free up disk space从 HDFS 中删除文件不会释放磁盘空间
【发布时间】:2014-04-14 10:52:17
【问题描述】:

将我们的小型 Cloudera Hadoop 集群升级到 CDH 5 后,删除文件不再释放可用存储空间。即使我们删除的数据多于添加的数据,文件系统也会不断填满。

集群设置

我们在物理专用硬件上运行一个四节点集群,总存储容量约为 110 TB。 4 月 3 日,我们将 CDH 软件从 5.0.0-beta2 版本升级到了 5.0.0-1 版本。

我们以前以大约 700 GB/天的速度将日志数据以纯文本格式放在 hdfs 上。在 4 月 1 日,我们改为将数据导入为 .gz 文件,这将每日摄取率降低到约 130 GB。

由于我们只想将数据保留到一定期限,因此每晚都有删除过时文件的工作。这样做的结果以前在 hdfs 容量监控图表中是清晰可见的,但现在已经看不到了。

由于我们每天导入的数据比我们删除的数据少约 570 GB,因此人们预计使用的容量会下降。但是,自集群软件升级以来,我们报告的 hdfs 使用量一直在不断增长。

问题描述

运行hdfs hadoop fs -du -h / 给出以下输出:

0       /system
1.3 T   /tmp
24.3 T  /user

考虑到导入文件的大小,这与我们期望看到的一致。使用 3 的复制因子,这应该对应于大约 76.8 TB 的物理磁盘使用量。

当运行hdfs dfsadmin -report 时,结果不同:

Configured Capacity: 125179101388800 (113.85 TB)
Present Capacity: 119134820995005 (108.35 TB)
DFS Remaining: 10020134191104 (9.11 TB)
DFS Used: 109114686803901 (99.24 TB)
DFS Used%: 91.59%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

在这里,DFS Used 报告为 99.24 TB,这是我们在监控图表中看到的。所有这些数据是从哪里来的?

我们尝试过的

我们首先怀疑垃圾的自动清空功能不起作用,但事实并非如此。只有最近删除的文件在回收站中,一天后它们会自动消失。

我们的问题似乎与执行 hdfs 元数据升级但未最终确定会发生的情况非常相似。我认为在这些版本之间升级时不需要这样做,但仍然“以防万一”执行了这两个步骤。

在本地文件系统的DN存储卷上,`previous/finalized'下有很多数据。我对 hdsf 的实现细节知之甚少,不知道这是否重要,但这可能表明最终确定的某些内容不同步。

我们很快就会用完集群上的磁盘空间,因此非常感谢任何帮助。

【问题讨论】:

    标签: hadoop hdfs cloudera-cdh


    【解决方案1】:

    我在我们的集群上发现了一个类似的问题,这可能源于升级失败。

    首先确保在namenode上完成升级

    hdfs dfsadmin -finalizeUpgrade
    

    我发现数据节点由于某种原因根本没有最终确定它们的目录。

    在您的数据节点上,您应该会看到以下目录布局

    /[mountpoint}/dfs/dn/current/{blockpool}/current
    

    /[mountpoint}/dfs/dn/current/{blockpool}/previous
    

    如果您尚未最终确定上一个目录包含更新前创建的所有数据。如果您删除任何内容,它不会删除它 - 因此您的存储空间永远不会减少。

    其实最简单的解决方案就足够了

    重启namenode

    观察数据节点的日志,你应该会看到类似这样的东西

    INFO org.apache.hadoop.hdfs.server.common.Storage: Finalizing upgrade for storage directory
    

    之后会在后台清除目录并回收存储。

    【讨论】:

    • 谢谢!这似乎正是发生的事情。只是重新启动名称节点并没有帮助。我们需要手动删除所有 previous 目录以摆脱它们。
    • 非常有用的答案,有同样的问题(从 CDH4.7 到 CDH5.3)。为了补充 knuth 的评论,hdfs 花了一段时间(6-10 小时)来删除所有数据节点上的 /previous 目录,但我没有手动删除它们。
    • Pixou,您能否提一下自动删除这些目录的过程;您采用的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多