Hadoop 教程

Page 38

着 Combiner 的输出会被发送到 Reducer 那里,而不是发送 Mapper 的输出。 Combiner 是一个“迷你 reduce”过程,它只处理单台机器生成的数据。 词频统计是一个可以展示 Combiner 的用处的基础例子,上面的词频统计程序为每 一个它看到的词生成了一个(word,1)键值对。所以如果在同一个文档内“cat” 出现了 3 次,(”cat”,1)键值对会被生成 3 次,这些键值对会被送到 Reducer 那里。通过使用 Combiner,这些键值对可以被压缩为一个送往 Reducer 的键值对 (”cat”,3)。现在每一个节点针对每一个词只会发送一个值到 reducer,大大减 少了 shuffle 过程所需要的带宽并加速了作业的执行。这里面最爽的就是我们不用 写任何额外的代码就可以享用此功能!如果你的 reduce 是可交换及可组合的,那 么它也就可以作为一个 Combiner。你只要在 driver 中添加下面这行代码就可以在 词频统计程序中启用 Combiner。 139

conf.setCombinerClass(Reduce.class);

Combiner 应是 Reducer 接口的实例,如果你的 Reducer 由于不可交换或不可组合 不能作为 Combiner,你仍可以写一个第三方类来作为你的作业的 Combiner。

OSSEZ.COM-v1.0-技术模板简易版.ott 版权所有 © OSSEZ LLC 2006 - 2012

2012-09-10 38 / 38


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.