Hadoop大数据系列三 - MapReduce

MapReduce:分布式计算框架

MapReduce is a software framework for easily writing applications which process vast amounts of data (multi-terabyte data-sets) in-parallel on large clusters (thousands of nodes) of commodity hardware in a reliable, fault-tolerant manner.

Why MapReduce

如果想统计下过去10年计算机论文出现最多的几个单词,看看大家都在研究些什么,那收集好论文后,该怎么办呢?

方法一:单机执行

方法二:多线程招行

方法三:多个计算机执行

方法四:MapReduce计算框架执行

相关件:

JobClient : 提交相关mapreduce任务给JobTracker

JobTracker:任务控制中心

TaskTracker:任务执行

整体流程

Map -> Combiner -> Shuffle -> Reduce

逻辑角度分析作业运行顺序:输入分片(input split)、map阶段、combiner阶段、shuffle阶段、reduce阶段

map阶段:即执行map函数。

Hadoop大数据系列三 - MapReduce_第1张图片

Combiner阶段:这是一个可选择的函数,实质上是一种reduce操作。combiner是map的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作。

可以理解为在map任务在单机执行完毕后,可单独执行combiner操作

Shuffle阶段:map输出到reduce输入,包括:

    1) map端的shuffle: 针对map输出的key进行排序又叫sort阶段。

    2) reduce端的shuffle:复制数据和归并数据,最终产生一个有序的reduce输入文件。

      Shuffle过程有许多可调优的参数来提高MapReduce的性能,其总原则就是给shuffle过程尽量多的内存空间。

Reduce阶段:即执行reduce函数并将结果存储到hdfs文件系统中。

Hadoop大数据系列三 - MapReduce_第2张图片

相关python streaming代码示例


Hadoop大数据系列三 - MapReduce_第3张图片


Hadoop大数据系列三 - MapReduce_第4张图片

关于shuffle的具体细节可参考

考资料:http://langyu.iteye.com/blog/992916

你可能感兴趣的:(Hadoop大数据系列三 - MapReduce)