【问题标题】:Deleting very large no of files from hdfs从 hdfs 中删除非常大的文件
【发布时间】:2017-04-10 05:07:35
【问题描述】:

我在 Cento 7.2 上的单节点 hadoop 集群 HDFS 中有 400 万个文件。由于我的应用程序的一些损坏,数十万个重复文件存储在 HDFS 中。我想从 hdfs 中删除这些文件。

我尝试使用 shell 脚本执行此操作,但它需要很多时间(2 天内 100k 个文件)。脚本包含单个命令(hdfs dfs -rm --skipTrash <file path>)

【问题讨论】:

  • 如果可以,为什么不删除目录。
  • 如果有效文件列表很小,则将它们移动到不同的目录,然后删除该目录。发布将有效文件移回原始目录。
  • 为什么不将所有文件作为参数传递给单个hdfs dfs -rm 命令?单独运行它们会打开和关闭与 Namenode 的客户端连接,并且需要更多时间。
  • 这是 bash 的限制。 getconf ARG_MAX 应该为您提供可以传递给命令的最大参数数。根据这个值修改命令。
  • 在单个命令中传递所有文件路径并增加 arg_max 解决了这个问题。还需要增加hadoop_client_heap大小

标签: hadoop hdfs


【解决方案1】:

这样试试

hdfs dfs -find <path> | xargs -P 10 -n 1000 hdfs dfs -rm -skipTrash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2016-03-12
    • 1970-01-01
    • 2012-04-06
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多