【问题标题】:Distributed Cache and performance Hadoop分布式缓存和性能 Hadoop
【发布时间】:2014-02-23 01:43:05
【问题描述】:

我想让我对hadoop分布式缓存的理解更清楚。我知道当我们将文件添加到分布式缓存时,文件会加载到集群中每个节点的磁盘上。

那么文件的数据如何传输到集群中的所有节点。是通过网络吗?如果是这样,会不会对网络造成压力?

我有以下想法,对吗?

如果文件很大,会不会造成网络拥塞?

如果节点数量多,即使文件是中小型,文件的复制和传输到所有节点,会不会造成网络拥塞和内存限制?

请帮助我理解这些概念。

谢谢!!!

【问题讨论】:

    标签: java hadoop mapreduce distributed-caching


    【解决方案1】:
    1. 是的,文件通过网络传输,通常通过 HDFS。与将 HDFS 用于任何非数据本地任务相比,它不会对网络造成更大的压力。

    2. 如果文件很大,可能会出现网络拥塞,但您已经将 jar 推送到所有这些任务跟踪器,所以只要您的文件不比 jar 大太多,你的开销应该不会太差。

    3. 文件的复制与最终会提取此文件的任务跟踪器的数量完全分开。复制也将从一个节点链接到另一个节点,并且无论如何都是拥有容错分布式文件系统的成本。同样,假设分布式缓存中的文件与您的 jar 具有相同大小,网络拥塞并不比将您的 jar 推送到所有任务跟踪器更成问题。

    只要按预期使用,分布式缓存的总体开销是微不足道的,这是一种将相当小的缓存数据推送到执行计算的任务跟踪器本地的一种方式。

    编辑:这是 0.20 的 DistributedCache 文档。请注意,这些文件是通过 url 指定的。通常你会在你的本地 hdfs:// 设置中使用一些东西。

    【讨论】:

    • 感谢您的解释!!!很有帮助!!!对于我的应用程序,我想将大量中小文件添加到分布式缓存中。我实现了它,随着文件数量的增加,我的程序减少了 66%。在reduce中访问分布式缓存。有什么建议吗?
    • 似乎您应该将这些中等文件的大小和数量压缩成一些更专业的格式。实际上,您可以为此目的使用另一个 MapReduce 作业。
    【解决方案2】:

    我认为您对分布式缓存的理解是正确的。因为我也这么认为:) 也许增加分布式缓存的复制可以减少网络传输

    【讨论】:

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