Hadoop Mapreduce的框架组成

Posted 李华东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop Mapreduce的框架组成相关的知识,希望对你有一定的参考价值。

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的框架组成的主要内容,如果未能解决你的问题,请参考以下文章

使用 mapred 或 mapreduce 包创建 Hadoop 作业哪个更好?

hadoop.mapred vs hadoop.mapreduce?

手把手教程,零基础也能玩转MapReduce

Hadoop MapReduce 新旧 mapred 与 mapreduce API

Hadoop之MapReduce命令

解决 mapreduce.Cluster 无法使用 org.apache.hadoop.mapred.YarnClientProtocolProvider 由于实例化 YarnClient 错误