(一)MapReduce基本介绍
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序(例如:jar包),并发运行在一个Hadoop集群上。
MapReduce程序被分为Map(映射) 阶段和Reduce(化简)阶段。把计算任务分发到数据节点进行运算;Map会处理本节点的原始数据,产生的数据会临时保存到本地磁盘,那么每个节点会得到一部分结果(因为节点上的数据是一部分数据)。Reduce是会跨节点fetch属于自己的数据,并进行处理,把结果进行汇总,存储到HDFS。
核心思想
分而治之,并行计算
移动计算,而非移动数据。数据在各个节点上,我们把计算任务移动上去,而不是移动数据。
(二)MapReduce工作过程
我们来通过一个例子来看看mapreduce的大致工作过程。假设有很多份的英文资料,我们要对英语单词进行分拣:统计以a-p,或者q-z开头的单词,单独把他们放在两个不同的文件中。

说明如下:
- 绿色的文件有200M,并分成两个块。红色的文件有100M,所以一共分成了3个块。启动3个Map任务。
- 每个Map任务读取数据,按行处理,按空格进行切分,组成KV键值对,单词为键,1为值,将键值对保存到磁盘。其他的mapTask也会去生成这样的文件,这个文件的内容会有两个部分:a-p是一部分,q-z是另一部分。
- reducer任务。根据具体的需求去启对应的数量的reducerTask(这里需要两个),每个ReducerTash会去每个节点上去拉取自己需要的数据。运行reduce程序,保存数据。

2万+

被折叠的 条评论
为什么被折叠?



