gpt4 book ai didi

linux - 我如何清除或合并 HDFS 中的数百万个文件?

转载 作者:IT王子 更新时间:2023-10-29 00:38:08 26 4
gpt4 key购买 nike

在我们的 Datalake (Hadoop/Mapr/Redhat) 中,我们有一个包含超过 40M 文件的目录。我们无法运行 ls 命令。

我尝试启动 hadoop 命令 getmerge 来合并文件,但没有输出。

Hadoop fs -rm 也不起作用。

还有其他方法可以查看此文件夹的内容吗?如何在不扫描的情况下从中清除旧文件?

谢谢

最佳答案

几件事。如果您有权访问名称节点或辅助节点,您可以使用 hdfs oiv 将 HDFS 转储到离线分隔文件,然后找到您正在寻找的路径。

Hadoop 有一种名为 .har 的现有文件格式,代表 Hadoop 存档。如果你想保留你的文件,你应该考虑使用它而不是 getmerge

您可以使用distcp 来删除目录。

您可以在/tmp 中创建一个空的 HDFS 目录,然后使用 distcp 将空目录复制到包含 40M 文件的目录中,并使用更多映射器进行删除。

$ hdfs dfs -mkdir /tmp/empty_dir
$ hadoop distcp -m 20 -delete /tmp/empty_dir /PATH-OF-MILLION-FILES-DIR

fs -rm -r 是单线程的,而 distcp 基于映射器并行运行。您应该将 -delete 选项与 distcp 一起使用。

引用资料:

关于linux - 我如何清除或合并 HDFS 中的数百万个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com