cachedDistributed文件在mapreduce程序中有多少开销?

时间:2013-09-27 01:29:58

标签: hadoop mapreduce

每个cachedDistributed文件在map-reduce程序中有多少开销?我有一个mapreduce程序,其中我需要有50个cachedDistributed文件(非常小的大小),它们的开销似乎远远大于我只有1个cachedDistributed文件的情况。真的吗? 据我所知,cachedDistributed文件被复制到运行映射器的每台机器上,因此对cachedDistributed文件的访问是本地的,不应该有太多的开销。

1 个答案:

答案 0 :(得分:0)

我认为您可能会尝试使用存档文件(文件在自动化任务节点上取消存档)。 您可以将归档文件添加到DistributedCache,意思是:

  • 使用GenericOptionsParser的工具。然后,您可以将要分发的文件指定为以逗号分隔的URI列表作为-archives选项的参数。如果未指定方案,则假定文件是本地文件。因此,当您启动作业时,本地文件将复制到分布式文件系统(通常是HDFS)

    $> hadoop jar foo.jar ClassUsingDistributedCacheFile -archives archive.jar input output

  • 使用分布式缓存API(请参阅javaDoc)。使用API​​,URI指定的文件必须位于共享文件系统中(因此java API不会复制文件。

在运行任务之前,tasktracker会将文件从分布式文件系统复制到本地磁盘,如您所述。我认为开销来自于检索HDFS中的所有小文件