Hadoop - 分布式缓存中的大文件

时间:2013-06-25 07:16:48

标签: hadoop distributed-cache

我有一个4 GB的文件,我试图通过分布式缓存在所有映射器之间共享。但我观察到地图任务尝试启动的重大延迟。具体来说,我提交作业的时间(通过job.waitForCompletion())与第一张地图开始的时间之间存在显着延迟。

我想知道在DistributedCache中使用大文件的副作用是什么。复制分布式缓存上的文件多少次?群集中的节点数是否会对此产生影响?

(我的群集在非常强大的计算机上运行了大约13个节点,每台计算机可以容纳近10个地图位置。)

由于

1 个答案:

答案 0 :(得分:5)

在这种情况下,“缓存”有点误导。您的4 GB文件将与jar和配置一起分发到每个任务。

对于大于200mb的文件,我通常将它们直接放入文件系统,并将复制设置为比通常复制更高的值(在您的情况下,我将其设置为5-7)。您可以通过常用的FS命令直接读取每个任务中的分布式文件系统,如:

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

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

相关问题