分布式缓存中的大型文件

zaq34kh6  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(446)

我有一个4 gb的文件,我正试图通过一个分布式缓存在所有Map器之间共享。但我观察到Map任务尝试开始时有明显的延迟。具体来说,在提交作业(通过job.waitforcompletion())和第一个Map开始之间有一个明显的延迟。
我想知道在分布式缓存中有大文件会有什么副作用。分布式缓存上的文件被复制了多少次?集群中的节点数对此有影响吗?
(我的集群有大约13个节点,运行在功能强大的机器上,每台机器可以托管近10个Map槽。)
谢谢

8xiog9wr

8xiog9wr1#

这种情况下的“缓存”有点误导。您的4GB文件将与JAR和配置一起分发到每个任务。
对于大于200mb的文件,我通常将它们直接放入文件系统,并将复制设置为比通常复制更高的值(在您的情况下,我会将其设置为5-7)。在每个任务中,您都可以通过以下常见的fs命令直接从分布式文件系统中读取:

FileSystem fs = FileSystem.get(config);
fs.open(new Path("/path/to/the/larger/file"));

这样可以节省集群中的空间,但也不应延迟任务的启动。然而,在非本地hdfs读取的情况下,它需要将数据流传输到可能使用大量带宽的任务。

相关问题