在Hadoop中加入与分布式缓存



Hadoop中的联接和分布式缓存有什么区别?我真的很困惑地图端连接和减少端连接它的工作原理。分布式缓存在处理MapReduce作业中的数据时有何不同。请分享示例。问候拉维

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

字 ->频率

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

地图侧连接。

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

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

缺点:需要对输入数据进行预排序(例如,作为上一个map/reduce作业的结果)

减少联接。

当我们的文件尚未排序并且它们太大而无法放入内存时很有用。因此,您必须使用带有化简器的分布式排序来合并它们。

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

缺点: 需要减少阶段

分布式缓存。

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

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

缺点:需要其中一个输入才能放入内存。

相关内容

  • 没有找到相关文章

最新更新