【问题标题】:joins vs distributed cache in hadoop在 hadoop 中加入与分布式缓存
【发布时间】:2016-05-10 11:24:32
【问题描述】:

hadoop 中的连接和分布式缓存有什么区别。我对 map-side join 和 reduce-side join 以及它的工作原理感到非常困惑。在 mapreduce 作业中处理数据时,分布式缓存有何不同。请举例分享。 问候, 拉维

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    假设您有 2 个包含以下记录的数据文件:

    单词 -> 频率

    两个文件中可以出现相同的单词。 您的任务是合并这些文件,计算每个术语的总频率,并生成聚合文件。

    地图侧连接。

    当连接两边的数据已经按键预排序时很有用。在这种情况下,它是两个具有线性复杂度的流的简单合并。在我们的示例中,我们的词频数据必须按两个文件中的词的字母顺序进行预排序。

    优点: 可以处理几乎无限的输入数据(不必放入内存中)。 不需要减速器,因此非常高效。

    缺点: 要求您对输入数据进行预排序(例如,作为以前的 map/reduce 作业的结果)

    减少连接。

    当我们的文件尚未排序并且它们太大而无法放入内存时很有用。所以你必须使用分布式排序和reducer来合并它们。

    优点: 可以处理几乎无限的输入数据(不必放入内存中)。

    缺点:需要减少阶段

    分布式缓存。

    当我们的输入词频文件未排序并且两个文件之一小到足以放入内存时很有用。在这种情况下,您可以将其用作分布式缓存,并将其作为哈希表 Map 加载到内存中。每个映射器都将最大的输入文件作为键值对流式传输,并从哈希映射中查找较小文件的值。

    优点:基于最大输入集大小的高效线性复杂度。不需要减速机。

    缺点:需要输入之一以适合内存。

    【讨论】:

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