码迷,mamicode.com
首页 > 其他好文 > 详细

Hadoop Mapreduce的框架组成

时间:2018-01-27 21:21:58      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:map函数   mapr   nbsp   数据   使用   src   split   记录   inf   

技术分享图片

MapReduce的输入输出

  一个MapReduce作业的输入和输出类型:会有三组<key , value>键值对类型的存在

技术分享图片

Mapreduce作业的处理流程

按照时间顺序包括:

  输入分片(input split)

在进行map计算之前,mapreduce根据输入文件计算输入分片,每个输入分片针对一个map任务。

输入分片存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片往往和hdfs的block关系很密切。

  map阶段

程序员编写好map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行的。

  combiner阶段

conbiner阶段是程序员可以选择的,combiner其实也是一种reduce操作,因此我们看到WordCount类里是用reduce进行加载的。

Combiner是一个本地化的reduce操作,它是map运算的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作,例如我们对文件里的单词频率做统计,map计算时候如果碰到一个hadoop的单词就会记录为1,但是这篇文章里hadoop可能会出现n多次,那么map输出文件冗余就会很多,因此在reduce计算前对相同的key做一个合并操作,那么文件会变小,这样就提高了宽带的传输效率,毕竟hadoop计算力宽带资源往往是计算的瓶颈也是最为宝贵的资源,但是combiner操作是有风险的,使用它的原则是combiner的输入不会影响到reduce计算的最终输入。

  shuffle阶段

将map的输出作为reduce的输入的过程就是shuffle。

  reduce阶段

由程序员编写,最终结果存储在hdfs上。

 

Hadoop Mapreduce的框架组成

标签:map函数   mapr   nbsp   数据   使用   src   split   记录   inf   

原文地址:https://www.cnblogs.com/1iHu4D0n9/p/8367039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!