MapReduce 2简介
在Hadoop 1.0版本中,mapred.job.tracker决定了执行MapReduce程序的方式,若设置为local,则使用本地的作业运行器,若设置为主机:端口(eb179:9001),则该配置属性被解释为一个jobtracker地址;
在Hadoop 2.0版本中,用于执行的框架通过mapreduce.framework.name属性进行设置,值local表示本地的作业运行器,"classic"表示经典的MapReduce框架,yarn表示新的框架。
MapReduce2工作机制
对于节点数超过4000的大型集群,YARN改善了经典mapreduce面临的扩展瓶颈问题。
相关名词解释:
资源管理器(RM)
负责管理所有应用程序计算资源的分配。
应用管理器(AM)
每一个应用程序的AM负责相应的调度和协调。
容器
YARN为将来的资源隔离提出的框架,每一个任务对应一个容器,且只能在该容器中运行。
节点管理器
管理每个节点上的资源和任务,定期向RM汇报该节点的资源使用情况和各个容器的运行状态,接收并处理AM的任务启动、停止等请求。
工作机制

1、用户代码通过job.waitForCompletion(true)开启了该MapReduce作业的执行,创建Job类对象,调用submit()函数;submit()函数完成了如下操作:
2、向资源管理器获取新的作业ID,检查输出路径是否存在,计算输入分片,并将作业资源(包括作业jar、配置、分片信息)复制到HDFS,最后提交作业。
3、资源管理器收到作业请求后,便把请求传递给调度器,调度器分配一个容器,然后资源管理器在节点管理器的管理下在容器中启动应用程序的master进程。
4、master进程是一个java应用程序,它的主类是MRAppMaster,它对作业进行初始化:通过创建多个薄记对象以保持对作业进度的跟踪,因为它将接受来自任务的进度和完成报告。
5、master接受来自HDFS在客户端计算的输入分片,对每个分片创建一个map任务对象以及由mapreduce.job.reduces属性确定的多个reduce任务对象。
6、如果作业不适合在单个节点上运行,那么application master就会为该作业中的所有map任务和reduce任务向资源管理器请求容器,附着心跳信息的请求包括每个map任务的数据本地化信息,特别是输入分片所在的主机和相应机架信息,调度器使用这些信息来做调度决策,先数据本地化,再机架本地化。
MapReduce 1中,内存的分配对于集群是固定的(槽),不能充分利用内存;而在YARN中,资源分为更细的粒度,应用程序可以请求最小到最大限制范围的任意最小值倍数的内存容量,可以避免这个问题。
7、一旦资源管理器的调度器为任务分配了容器,application master就通过与节点管理器通信来启动容器,在运行任务之前,首先将任务所需要的资源本地化,包括作业的配置、jar文件和所有来自分布式缓存的文件,然后执行map任务或reduce任务。
进度和状态更新
在YARN运行时,任务每3秒钟向application master汇报进度和状态,客户端每秒钟查询一次application master以接收进度更新;除了向application master查询进度外,客户端每5秒钟还通过Job的waitForCompletion()来检查作业是否完成。作业完成后,application master和任务容器清理其工作状态。
YARN中的失败
任务运行失败
JVM运行时异常和突然退出会被反馈给application master,该任务尝试被标记为失败,如果失败次数超过3次(默认),则整个作业就失败了。
application master运行失败
应用程序失败也会有几次尝试的机会,可以设置yarn.resourcemanager.am.max-retries来增加允许失败的次数。
application master向资源管理器发送周期性的心跳,当application master发生故障时,资源管理器将检测到该故障并在一个新的容器(由节点管理器管理)中开始一个新的master实例。application master可以恢复故障应用程序所运行任务的状态,使其不必重新运行,而默认情况是不能恢复的,因此故障application master将重新运行它们的所有任务。
客户端向application master轮询进度报告,如果AM运行失败,客户端就需要定位新的实例,在作业初始化期间,客户端向资源管理器询问并缓存AM的地址,使其每次轮询时不必重载此地址,若AM失败,客户端请求超时,这时客户端会向资源管理器请求新的AM地址。
节点管理器运行失败
如果节点管理器失败,就会停止向资源管理器发送心跳信息并被移出可用资源管理池。如果失败次数过高,节点管理器会被拉黑,AM管理黑名单,如果一个节点管理器上有超过3个任务失败,AM就会尽量将任务调度到不同的节点上。
资源管理器运行失败
资源管理器失败是非常严重的问题,没有资源管理器,作业和任务容器将无法启动。如果资源管理器失败,由管理员启动一个新的资源管理器实例并恢复到保存的状态。状态由节点管理器和运行的应用程序组成。
作业的调度
MapReduce 1 的默认调度器是最初基于队列的FIFO调度器,可以设置优先级,但是优先级不支持抢占。
另外,还有两个多用户调度器。
公平调度器
公平调度器的目标是让每个用户公平共享集群的能力,公平调度器支持抢占机制,每个用户都有自己的作业池,如果一个池在特定的一段时间内未能公平共享资源,就会终止运行池中得到过多资源的任务,把空出来的任务槽让给资源不足的作业池。
容量调度器
集群由多个队列组成,这些队列可能是层次结构的(一个队列可能是另一个队列的子队列),每个队列被分配有一定的容量,这一点与公平调度器类似。不过在每个队列内部,作业根据FIFO(考虑优先级)进行调度。本质上,容量调度器允许用户或组织为每个用户模拟出一个使用FIFO调度策略的独立MapReduce集群,而公平调度器强制每个池公平共享作业共享池的资源。
MapReduce 2简介的更多相关文章
- MapReduce 计数器简介
转自:http://my.oschina.net/leejun2005/blog/276891?utm_source=tuicool&utm_medium=referral 1.计数器 简介 ...
- MongoDB MapReduce用法简介
Map-Reduce部分:Map-Reduce相当于关系型数据库中的group by,主要用于统计数据之用.MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用. 语法 db ...
- Hadoop mapreduce框架简介
传统hadoop MapReduce架构(老架构) 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 1.首先用户程序 (JobClient) 提交了一个 job,job ...
- MapReduce模型简介
- 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型
忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...
- MapReduce过程详解(基于hadoop2.x架构)
本文基于hadoop2.x架构详细描述了mapreduce的执行过程,包括partition,combiner,shuffle等组件以及yarn平台与mapreduce编程模型的关系. mapredu ...
- Hadoop 版本 生态圈 MapReduce模型
忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...
- [转] hadoop MapReduce实例解析-非常不错,讲解清晰
来源:http://blog.csdn.net/liuxiaochen123/article/details/8786715?utm_source=tuicool 2013-04-11 10:15 4 ...
- Hadoop集群(第6期)_WordCount运行详解
1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...
随机推荐
- zabbix3.0.4 部署之二 (Centos6.5系统准备)
1.安装Centos6.5 2.6.32-642.4.2.el6.x86_64 升级所有软件至最新: yum update 2.同步时间.安装ntpd yum install ntpddate n ...
- Security » Authorization » 要求处理器中的依赖注入
Dependency Injection in requirement handlers¶ 30 of 32 people found this helpful Authorization handl ...
- Laravel 流程分析——整体概论
从整体上来看(不考虑细节),Laravel流程相当简单,我们分析一下index.php文件(下面的第几行为实际代码,不是指文件的行) 第一行定义自动加载 require __DIR__.'/../bo ...
- jsp项目与mysql链接
因为毕设是地下车库管理系统,所以打算学习jsp进行开发~ 今天主要是[新建网站项目+mysql链接],在此篇之前所做的工作:tomcat服务器配置,mysql数据库的安装与启用(在之后的开发中可以使用 ...
- 最新为Phpstorm配置xdebug 进行断点调试
额 ,曾经写过一个,现在发现不咋好使了 ,你说咋整,下载xdebug的时候 还得注意系统是32位还是64位,而且一堆下载文件不知道是哪个. 额,所以我现在发现有个更好的方法,啥也不下了 直接配把 ...
- LINQ to Entities 不支持 LINQ 表达式节点类型“Invoke”(笔记)
今天使用使用动态查询的时候出现出现错误“LINQ to Entities 不支持 LINQ 表达式节点类型‘Invoke’.”,代码如下: IQueryable<CUSTOMER> que ...
- js对汉字首字母排序
var city = ["北京","天津","上海","重庆","杭州"];city.sort(fu ...
- C#之延迟加载
延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载.这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用 ...
- enmo_day_09
1. 数据库 select name from v$database; : 数据库名称 select db_unique_name from v$database; : 数据库唯一名称 select ...
- CSS第二天总结 更多的选择符
CSS的选择符非常多,今天继续总结后面的选择符 1.id和class选择符某些情况下我们用关系选择符或者伪类选择符无法选中一些元素时,我们可以给这些元素起 个名字或者分类,这就是id和class属性. ...