【问题标题】:Hadoop - Large files in distributed cacheHadoop - 分布式缓存中的大文件
【发布时间】:2014-02-22 17:28:13
【问题描述】:

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

我想知道在分布式缓存中拥有大文件的副作用。分布式缓存上的文件被复制了多少次?集群中的节点数量对此有什么影响吗?

(我的集群有大约 13 个节点在非常强大的机器上运行,每台机器能够托管近 10 个地图槽。)

谢谢

【问题讨论】:

    标签: hadoop distributed-cache


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多