linux - 超过命名空间配额时如何清空hadoop上的垃圾?

标签 linux hadoop apache-spark command-line hdfs

我想启动一个 hadoop 流式处理作业,但失败了: 19 年 5 月 15 日 23:17:34 错误 streaming.StreamJob:启 Action 业时出错:超出目录/user/myname 的命名空间配额(目录和文件):配额=1000000 文件计数=1000001

我尝试使用 hdfs dfs -rm -r -f files 删除一些文件,它报告文件已移至垃圾箱。然后我尝试了 hdfs dfs -expunge 然后我回来了:

15/05/19 23:12:32 信息 fs.TrashPolicyDefault:名称节点垃圾配置:删除间隔 = 0 分钟,清空间隔 = 0 分钟。 19 年 5 月 15 日 23:12:33 信息 fs.TrashPolicyDefault:已创建垃圾检查点:/user/myname/.Trash/150519231233

但我仍然得到原来的错误。我该怎么办?

最佳答案

如果我是你,我会按照另一个答案...


如果您真的知道自己在做什么,那么您可以:

[gsamaras@gwta3000 ~]$ hadoop fs -rm -f -r -skipTrash /path/to/dirToBeDeleted
Deleted /path/to/dirToBeDeleted

我读后组装的:How to delete a non-empty directory in Terminal?和其余的..


当你删除一个文件或一个目录时,它会进入垃圾箱,但是当你删除垃圾箱时,有一个间隔(这是可配置的,取决于你的设置,我的是1h),它必须经过,所以实际删除发生。

这个想法是,您可能会不小心删除一些重要的东西(或在使用大量计算能力后生成的东西),并且该配置为您提供了恢复数据的机会。

如果您不确定如何进行,那么我建议您至少等待一个小时,然后再试一次,否则..


来自link ,有这个列表提出了一些想法:

  1. 告诉用户使用 -Dfs.trash.interval=0删除大的时候 目录
  2. 排除 /user/<username>/.Trash从配额
  3. 移动.Trash来自 /user directory .也许/Trash/<username> 并设置不同的配额。
  4. 何时-rm/rmr配额失败,自动删除它们。
  5. 引入一个单独的命令来执行 (1)。类似于 -rmr -skipTrash用于强制删除。

关于linux - 超过命名空间配额时如何清空hadoop上的垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336538/

相关文章:

scala - 如何在没有 Scala 的情况下测试 Spark SQL 查询

linux -/etc/group 文件中的成员列表限制

c - 在C、linux中通过poll fd获取unix socket连接是否需要额外的参数或设置?

hadoop - SQL 到 MapReduce - 怎么做?

hadoop - hadoop map task 超时

java - 如何将String类型的数据集转换为Row类型的数据集?

linux - GNU Parallel - 将输出重定向到具有特定名称的文件

linux - 我想检查第一列中的数字是否等于第二列,第一列应以以下格式开始和结束

java - 如何在 Mapreduce 中生成 UUID?

python - 如何在 pyspark 中对 spark 数据框中的多列求和?