Hadoop 生态之 MapReduce
|
这段代码中,不难看出程序核心是 map 函数和 reduce 函数。是否 MapReduce 就是由这两者组成的?接着往下看。 2.3 Map 和 Reduce 2.3.1 Map 在 WordCount 案例中,明显看到 map 函数的输入主要是一个 Context 在这里暂时性忽略,其是 Mapper 类的内部抽象类,一般计算中不会用到,可以先当做“上下文”理解。 map 函数计算过程是: 将这行文本中的单词提取出来,针对每个单词输出一个 2.3.2 Reduce 接着就来看看 reduce ,这里输入参数 Values 就是上面提到的由很多个 1 组成的集合,而 Key 就是具体“单词” word。 它的计算过程是: 将集合里的1求和,再将单词(word)与这个和(sum)组成一个
假设有两个数据块的文本数据需要进行词频统计,MapReduce 计算过程如下图所示: 到这都很容易理解,毕竟只是个 HelloWorld 的例子~,但整个MapReduce过程中最关键的部分其实是在 map 到 reduce 之间。 还拿上面例子来说:统计相同单词在所有输入数据中出现的次数,一个 Map 只能处理一部分数据,而热点单词就很可能会出现在所有 Map 中了,意味着同一单词必须要合并到一起统计才能得到正确结果。这种数据关联几乎在所有的大数据计算场景都需要处理,如果是例子这种的当然只对 Key 合并就OK了,但类似数据库 join 操作这种较复杂的,就需对两种类型(或更多)的数据依据 Key 关联。 这个数据关联操作在 MapReduce中的叫做:shuffle。 2.4 shuffle shuffle 从字面意思来看,洗牌。下面是一个完整的MR过程,看一看如何洗牌。 (编辑:揭阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

