MapReduce的架构及工作流程

MapReduce框架的组成


1Mapper负责

把复杂的任务分解为若干个简单的任务来处理。简单的任务包含三层含义:

1. 数据或计算的规模相对原任务要大大缩小
2. 就近计算原则,任务会分配到存放着所需数据的节点上进行计算
3. 这些小任务可以并行计算彼此间几乎没有依赖关系

2Reducer负责对map阶段的结果进行汇总。

至于需要多少个Reducer,可以根据具体问题,

通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值,缺省值为1

MapReduce 工作机制


mapreduce作业工作流程图




Mapreduce作业的4对象

1. 客户端( client ):编写 mapreduce 程序,配置作业,提交作业,这就是程序员完成的工作;
2. JobTracker :初始化作业,分配作业,与 TaskTracker 通信,协调整个作业的执行;
3. TaskTracker :保持与 JobTracker 的通信,在分配的数据片段上执行 Map Reduce 任务, TaskTracker JobTracker 的不同有个很重要的方面,就是在执行任务时候 TaskTracker 可以有 n 多个, JobTracker 则只会有一个( JobTracker 只能有一个就和 hdfs namenode 一样存在单点故障,我会在后面的 mapreduce 的相关问题里讲到这个问题的)
4. Hdfs :保存作业的数据、配置信息等等,最后的结果也是保存在 hdfs 上面


Mapreduce作业的处理流程


按照时间顺序包括:

输入分片(inputsplit)、

map阶段、

combiner阶段、

shuffle阶段和

reduce阶段

输入分片(inputsplit):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务

输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片(input split)往往和hdfsblock(块)关系很密切

  假如我们设定hdfs的块的大小是64mb,如果我们输入有三个文件,大小分别是3mb65mb127mb,那么mapreduce会把3mb文件分为一个输入分片(input split),65mb则是两个输入分片(input split)而127mb也是两个输入分片(input split

   我们如果在map计算前做输入分片调整,例如合并小文件,那么就会有5map任务将执行,而且每个map执行的数据大小不均,这个也是mapreduce优化计算的一个关键点。

map阶段:

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

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

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

例如:如果计算只是求总数,最大值,最小值可以使用combiner,但是做平均值计算使用combiner的话,最终的reduce计算结果就会出错。

shuffle阶段:map的输出作为reduce的输入的过程就是shuffle

map函数一样也是程序员编写的,最终结果是存储在hdfs上的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值