我在编写一个实用程序以在一个多于一周的循环中迭代地从 hdfs 删除文件和目录时遇到性能问题(从 shell 脚本调用 shell 命令)。此外,我在删除之前对每个文件/子目录进行了某些检查,这样我就不能只删除整个根目录。对于每次删除,shell 命令大约需要 2 秒。所以如果我必须删除 1600 个文件和子目录,完成它们需要将近 1 小时。当我改为使用 JAVA API(FileStatus 和 FileSystem)时,我获得了巨大的性能提升。它在 5 秒内完成。我想详细了解这背后的根本原因。我读到 shell 命令(如 -rm)在内部使用 JAVA API,但这是响应时间如此巨大差异的唯一原因吗?
问问题
402 次