Hadoop之MapReduce运行原理(一)

来源:互联网 发布:大数据量 数据库 编辑:程序博客网 时间:2024/05/11 23:30

一. 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、  推荐算法
0 0
原创粉丝点击