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
- Hadoop之MapReduce运行原理(一)
- Hadoop之MapReduce运行原理
- Hadoop 之MapReduce 运行原理全解析
- Hadoop之Mapreduce------>Mapreduce原理
- Hadoop之MapReduce原理
- Hadoop回顾--MapReduce工作原理(一)
- Hadoop之MapReduce运行理解
- Hadoop MapReduce之任务启动(一)
- Hadoop的Mapreduce运行原理详解
- Hadoop的Mapreduce运行原理详解
- Hadoop 2.6 MapReduce运行原理详解
- Hadoop中HDFS、MapReduce的运行原理
- Hadoop实践(一)---Hadoop核心组件之MapReduce
- Hadoop学习之MapReduce(一)
- Hadoop学习之MapReduce(一)
- Hadoop之运行原理
- MapReduce(一): Hadoop的简单配置运行
- MapReduce(一): Hadoop的简单配置运行
- MySQL用户名和密码都正确却无法登陆的问题
- android 媒体播放器之播放音乐
- android 媒体播放器之播放音乐
- Android Service基础
- IL2Cpp深坑之WeakReference
- Hadoop之MapReduce运行原理(一)
- html页面中引入css样式的3种方式
- 用for循环逆序输出一个整数
- Hadoop之异常篇
- Docker常用命令总结
- 170302
- 五、GC调优基本概念
- BZOJ 1500 splay终结版...
- mvn 创建项目架构