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函数。

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文件系统中。

相关python streaming代码示例



关于shuffle的具体细节可参考

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容