我想启动一个 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 ,有这个列表提出了一些想法:
- 告诉用户使用
-Dfs.trash.interval=0
删除大的时候 目录 - 排除
/user/<username>/.Trash
从配额 - 移动
.Trash
来自/user directory
.也许/Trash/<username>
并设置不同的配额。 - 何时
-rm
/rmr
配额失败,自动删除它们。 - 引入一个单独的命令来执行 (1)。类似于
-rmr -skipTrash
用于强制删除。
关于linux - 超过命名空间配额时如何清空hadoop上的垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30336538/