Hadoop之MapReduce运行原理(一)

一. Hadoop的知识架构图如下所示:

这里写图片描述

二、MapReduce 的基本概念

 1)MapReduce是什么?
   a、MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
   b、相对于Hadoop框架来说,其最核心设计就是:HDFS和MapReduce。
        HDFS提供了海量数据的存储,MapReduce提供了对数据的计算。
   c、MapReduce把任务分为 map(映射)阶段和reduce(化简)。
   d、源自于Google 的MapReduce 论文发表于2004年12月。
      Hadoop MapReduce 是Google MapReduce的克隆版。
   通俗的说法如下:
     我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。 
     我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是reduce。

三、MapReduce的特点

特点:

    1、易于编程(MapReduce最大的亮点)
    2、良好的扩展性
    3、高容错性
    4、适合PB 级以上海量离线数据处理

针对上述几个特点的解析:

    1、易于编程: 
    MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么(what to compute),
     而具体怎么去做(how to compute)就交由系统的执行框架处理,这样程序员可从系统层细节中解放出来,而致力于其应用本身计算问题的算法设计。   
   
    例如软件工程实践指南中,专业程序员认为之所以写程序困难,
    是因为程序员需要记住太多的编程细节(从变量名到复杂算法的边界情况处理),
    这对大脑记忆是一个巨大的认知负担,需要高度集中注意力而并行程序编写有更多困难,
    如需要考虑多线程中诸如同步等复杂繁琐的细节,由于并发执行中的不可预测性,程序的调试查错也十分困难;
    大规模数据处理时程序员需要考虑诸如数据分布存储管理、数据分发、数据通信和同步、计算结果收集等诸多细节问题。  
    
    2、良好的扩展性
       当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。  
       
    3、高容错性:
    MapReduce 设计的初衷就是使程序能够部署在廉价的 PC 机器上,
    这就要求它具有很高的容错性。
    比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上面上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,
    而完全是由 Hadoop 内部完成的。  

    4、PB 级以上海量数据的离线处理
    这里加上离线处理,说明它适合离线处理而不适合在线处理。比如像毫秒级别的返回一个结果,MapReduce 很难做到。 

MapReduce 的特色— 不擅长的方面

1、实时计算
     像MySQL 一样,在毫秒级或者秒级内返回结果

2、流式计算
     MapReduce 的输入数据集是静态的,不能动态变化
     MapReduce 自身的设计特点决定了数据源必须是静态的

3、DAG 计算
     多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出
     也就是说用MapReduce来处理的数据集(或任务)必须具备这样的特点:
     待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。

解说:DAG
这里写图片描述

四. MapReduce的架构

和HDFS一样,MapReduce也是采用Master/Slave的架构,其架构图如下所示。这里分别整理出MapReduce1.0与2.0的架构图

MapReduce 1.0 的架构图:

这里写图片描述

架构图解说 :
这里写图片描述

这里写图片描述

MapReduce 2.0 的架构图: (重点理解2.0的)

这里写图片描述

架构图解说 :

 a、Client
    与MapReduce 1.0 的Client类似,用户通过Client与YARN交互,提交MapReduce作业,查询作业运行状态,管理作业等。
    
 b、MRAppMaster
    功能类似于 1.0 中的JobTracker ,但不负责资源管理;
    功能包括:任务划分、资源申请并将之二次分配个Map Task和Reduce Task。

MapReduce 2.0 的运行流程

这里写图片描述

MapReduce 2.0 容错性

a、MRAppMaster 容错性
   一旦运行失败,由YARN 的ResourceManager 负责重新启动,最多重启次数可由用户设置,默认是2 次。一旦超过最高重启次数,则作业运行失败。

b、Map Task/Reduce Task
  Task 周期性向MRAppMaster 汇报心跳;
  一旦Task 挂掉,则MRAppMaster 将为之重新申请资源,并运行之。最多重新运行次数可由用户设置,默认4 次。 

MapReduce 计算框架— 推测执行机制

    1、作业完成时间取决于最慢的任务完成时间
       一个作业由若干个Map 任务和Reduce 任务构成
       因硬件老化、软件Bug 等,某些任务可能运行非常慢
       典型案例:系统中有99%的Map任务都完成了,只有少数几个Map老是进度很慢,完不成,怎么办?
       
   2、推测执行机制:
       发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度
       为拖后腿任务启动一个备份任务,同时运行
       谁先运行完,则采用谁的结果
       
   3、不能启用推测执行机制
      任务间存在严重的负载倾斜
      特殊任务,比如任务向数据库中写数据  

MapReduce 计算框架— 任务并行执行
这里写图片描述

五、常见MapReduce 应用场景

1、  简单的数据统计,比如网站pv 、uv 统计
2、  搜索引擎建索引
3、  海量数据查找
4、  复杂数据分析算法实现
5、  聚类算法
6、  分类算法
7、  推荐算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值