Hadoop 从hdfs中删除非常大数量的文件

Hadoop 从hdfs中删除非常大数量的文件,hadoop,hdfs,Hadoop,Hdfs,我在Cento7.2上的单节点hadoop集群HDFS中有400万个文件。由于我的应用程序的一些损坏,数十万个重复文件被存储在HDFS中。我想从hdfs中删除这些文件 我试着用shell脚本来做,但这需要很多时间(2天内有100k个文件)。脚本包含单个命令(hdfs dfs-rm--skipTrash)像这样试试 hdfs dfs -find <path> | xargs -P 10 -n 1000 hdfs dfs -rm -skipTrash hdfs-dfs-find | x

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

我试着用shell脚本来做,但这需要很多时间(2天内有100k个文件)。脚本包含单个命令(
hdfs dfs-rm--skipTrash

像这样试试

hdfs dfs -find <path> | xargs -P 10 -n 1000 hdfs dfs -rm -skipTrash
hdfs-dfs-find | xargs-p10-n1000 hdfs-dfs-rm-skipTrash
像这样试试

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

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