在hadoop中,跨mapper reducer多个输入保存状态的能力是什么意思?

0pizxfdo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(239)

问题的标题解释了我的问题是什么。我已经阅读了多篇课文,在我遇到这一行的地方找到了答案
通过使用组合器并利用跨多个输入保持状态的能力,通常可以实质性地减少需要从Map器洗牌到还原器的键值对的数量和大小。
我不能理解这个概念。详细的回答和解释,并举例说明,将是非常有帮助的。如何培养理解这些概念的直觉?

oxiaedzo

oxiaedzo1#

如果你已经觉得“减速机”的概念舒适,一个组合器的概念将很容易。合路器可以看作是map阶段的一个小型减速机。我的意思是什么?让我们看一个例子:假设您正在处理经典的wordcount问题,您知道Map器会为每个单词发出一个键值对。然后reducer将把这个键值对作为输入,并对它们进行求和。假设Map程序收集一些键值对,如:

<key1,1>,
<key2,1>,
<key1,1>,
<key3,1>,
<key1,1>

如果您不使用组合器,这4个键值对将被发送到reducer。但是使用组合器,我们可以在Map器中执行预还原,因此Map器的输出将是:

<key1,3>,
<key2,1>,
<key3,1>

在这个简单的示例中,通过使用组合器,您将键值对的总数从5减少到3,这将减少网络通信量,并在洗牌阶段获得更好的性能。

相关问题