在hadoop中加入vs分布式缓存

时间:2015-01-23 19:28:08

标签: hadoop mapreduce

hadoop中的连接和分布式缓存之间有什么区别。我真的很困惑地图侧连接和减少侧连接它工作的单桅帆船。在mapreduce作业中处理数据时分布式缓存是如何不同的。请与例子分享。 问候, 拉维

1 个答案:

答案 0 :(得分:3)

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

字 - >频率

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

映射边连接。

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

优点:适用于几乎无限的输入数据(不必适合内存)。 不需要减速机,因此非常有效。

缺点:要求对输入数据进行预先排序(例如,作为先前地图/减少作业的结果)

减少加入。

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

优点:适用于几乎无限的输入数据(不必适合内存)。

缺点:需要减少阶段

分布式缓存。

当我们的输入字频文件没有排序,并且两个文件中的一个足够小以适合内存时很有用。在这种情况下,您可以将其用作分布式缓存,并将其作为哈希表Map< String,Integer>加载到内存中。每个映射器都会将最大的输入文件作为键值对进行流式处理,并从哈希映射中查找较小文件的值。

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

缺点:需要其中一个输入以适应内存。