Hadoop之MapReduce的两种任务模式

MapReduce按照任务大小和设置的不同,提供了两种任务模式:

客户端通过org.apache.hadoop.mapreduce.protocol.ClientProtocol与服务端通信,ClientProtocol的继承关系:

老一些的版本还有一个JobTracker的实现类,即:classic。用于和MapReduce1.X兼容用的,高一些的版本已经没有这个实现类了。

一,本地模式(LocalJobRunner实现)

mapreduce.framework.name设置为local,则不会使用YARN集群来分配资源,在本地节点执行。在本地模式运行的任务,无法发挥集群的优势。注:在web UI是查看不到本地模式运行的任务。

二,Yarn模式(YARNRunner实现)

mapreduce.framework.name设置为yarn,当客户端配置mapreduce.framework.name为yarn时, 客户端会使用YARNRunner与服务端通信, 而YARNRunner真正的实现是通过ClientRMProtocol与RM交互, 包括提交Application, 查询状态等功能。但是根据任务的特性,分为两种方式执行任务:

1,uber mode:

Uber模式是Hadoop2.0针对MR小作业的优化机制。通过mapreduce.job.ubertask.enable来设置是否开启小作业优化,默认为false。

如果用Job足够小,则串行在的一个JVM完成该JOB,即MRAppMaster进程中,这样比为每一个任务分配Container性能更好。

那么什么才是足够小的Job呢?下面我们看看一些的参数(mapred-site.xml):

  • mapreduce.job.ubertask.maxmaps 最大的map数。默认值9
  • mapreduce.job.ubertask.maxreduces 最大的reduce数,默认为1
  • mapreduce.job.ubertask.maxbytes 最大的字节数,如果没有指定,默认和dfs.block.size一样。

应用程序的其他配置也会影响到对“小”的定义,yarn.app.mapreduce.am.resource.mb必须大于mapreduce.map.memory.mb和mapreduce.reduce.memory.mb,还有yarn.app.mapreduce.am.resource.cpu-vcores必须大于mapreduce.map.cpu.vcores 和 mapreduce.reduce.cpu.vcores,以下是这个配置的说明:

  • yarn.app.mapreduce.am.resource.mb   MR AppMaster需要的内存数,默认为1536
  • mapreduce.map.memory.mb  从调度器(scheduler)为每个Map Task请求的内存数,默认1024
  • mapreduce.reduce.memory.mb  从调度器(scheduler)为每个Reduce Task请求的内存数,默认1024
  • yarn.app.mapreduce.am.resource.cpu-vcores MR AppMaster需要的虚拟CPU核数,默认为1536
  • mapreduce.map.cpu.vcores 从调度器(scheduler)为每个Map Task请求的虚拟CPU核数,默认1
  • mapreduce.reduce.cpu.vcores  为每个Map Reduce请求的虚拟CPU核数,默认1

链式Job也不能使用Uber模式执行,即使满足了上面的情况也不能。因为链式作业会并发执行不同资源需求的map task和reduce task。链式Job是指集成了org.apache.hadoop.mapreduce.lib.chain.ChainReducer和org.apache.hadoop.mapreduce.lib.chain.ChainMapper类的用户Map或Reduce程序。

yarn.app.mapreduce.am.resource.mb和yarn.app.mapreduce.am.resource.cpu-vcores是在yarn框架的级别,其他四个关于内存和CPU的配置是和具体每个Mapreduce任务有关,如果Mapreduce所需的资源大于Yarn框架定义的资源数量,则不能当成“小”Job使用uber mode执行了。

2,Non-Uber mode:

Uber只能执行一小部门的任务,在大数据环境下,大部分任务仍然运行在Non-Uber模式下,MRAppMaster将一个作业的map task和reduce task分为四种状态:

pending:刚启动但尚未向ResourceManager发送资源请求

scheduled:已经向ResourceManager发送资源请求,但尚未分配到资源

assigned:已经分配到了资源且正在运行

completed:已经运行完成。

MRAppMaster初始化之后,会产生一系列的Map Task和Reduce Task。

Map Task的生命周期是:

scheduled->assigned->completed

Reduce Task的生命周期是:

pending->scheduled->assigned->completed

上面我们可以看到,Reduce Task比Map Task多一个pending的状态,主要是因为Reduce Task需要依赖Map Task的输出,为了防止Reduce Task启动过早造成资源浪费,MRAppMaster让刚启动的Reduce Task处于pending状态,这样可以根据Map Task的运行情况和具体的配置来调整Reduce Task状态(pengding到scheduled中相互转移),以下几个参数是有来配置Reduce Task的启动时机的:

  • mapreduce.job.reduce.slowstart.completedmaps     map task完整了多少比率才开始为reduce task生成资源
  • yarn.app.mapreduce.am.job.reduce.rampup.limit     在maps task已经完成,启动reduce task的比率。默认为0.5
  org.apache.hadoop.mapreduce.MRJobConfig:

 /**
   * Limit reduces starting until a certain percentage of maps have finished.
   *  Percentage between 0.0 and 1.0
   */
  public static final String MR_AM_JOB_REDUCE_RAMPUP_UP_LIMIT =
    MR_AM_PREFIX  + "job.reduce.rampup.limit";
  public static final float DEFAULT_MR_AM_JOB_REDUCE_RAMP_UP_LIMIT = 0.5f;
  • yarn.app.mapreduce.am.job.reduce.preemption.limit      当map task不能申请资源时,map task最多可以抢占reduce task资源的比率。默认为0.5
  org.apache.hadoop.mapreduce.MRJobConfig:
  /**
   * Limit on the number of reducers that can be preempted to ensure that at
   *  least one map task can run if it needs to. Percentage between 0.0 and 1.0
   */
  public static final String MR_AM_JOB_REDUCE_PREEMPTION_LIMIT =
    MR_AM_PREFIX  + "job.reduce.preemption.limit";
  public static final float DEFAULT_MR_AM_JOB_REDUCE_PREEMPTION_LIMIT = 0.5f;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 17:00:16

Hadoop之MapReduce的两种任务模式的相关文章

javaweb学习总结(二十一)——JavaWeb的两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

php微信开发 -- 两种运营模式及服务器配置

微信的两种运营模式 编辑模式:使用微信公众平台提供的功能 开发者模式:通过腾讯的api接口调用相应程序进行二次开发 编辑模式 应用场景: l 不具备开发能力的运营者 l 主要是进行品牌宣传.新闻媒体.自助客服的公众帐号 l 运营初期,不需要特别多的功能 l 开发模式系统升级.故障等特殊情况 功能演示: 1)自动回复 被添加自动回复:当我们订阅或关注微信公众平台时,系统自动发送的回复,我们称之为关注回复或订阅回复. 关键词自动回复:当用户输入的关键词与我们系统设置的关键词相匹配时,自动返回的回复.

AGPS 常见的两种定位模式

SI 定位模式: 用户发起定位请求,辅助GPS 模块快速进行定位.时间在6秒-15秒之间. 这个方式能够有效的解决普通GPS 最快需要30秒时间获得卫星星历的搜星慢的问题,如果使用AGPS将通过中移动的服务器拿到卫星星历,时间可以缩短到6秒-15秒. 对应流程: 启动AGPS UI 管理 -> 开始获取基站信息.IMSI信息―> 启动拨号->与中移动服务器进行SUPL 协议通讯获取卫星星历――> 配置GPS模块进行定位->关闭通讯网络-> 导航软件快速获取精度.纬度.

创建后台任务的两种代码模式

创建后台任务的两种代码模式 后台任务是每个App都需要的一些行为,毕竟主线程是大爷,拖不起,伤不起,脏活累活都只能在不见天日的后台去做. 最简单的后台任务,可以说是直接开一个线程就可以了,或者说来个Service,再开个线程.但这些并不是官方认证的最佳实践,实际上,Google早就考虑到了这一点,并把这些需求进行了封装,给我们提供了非常好的后台任务解决方案,并在Training上进行了讲解: 官网镇楼: https://developer.android.com/training/best-ba

javaweb基础(21)_两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

ftp的两种工作模式

注:①ftp监听两个端口:控制端口21 和数据端口20 ②两种工作模式为:主动模式  和被动模式 主动模式: 客户端要去连接ftp服务端,首先客户端会随机打开一个大于1024的端口,去连接ftp服务端的21号控制端口,这个过程需要三次握手(略过),连接后客户端便可以在服务端执行一些命令,如:查询,上传,下载等 当客户端与服务端之间产生数据传输的时候,客户端会告诉服务端采用哪种模式,如主动模式(active),这时ftp服务端就会通过自己的20号数据端口去连接客户端的另一个随机端口,这个过程需要三

4.net两种交互模式

.net两种交互模式 (1) C/S:客户端(Client)/服务器模式(Server) (2) B/S:浏览器(Browser)/服务器模式(Server) 来自为知笔记(Wiz)

Spark on YARN两种运行模式介绍

本文出自:Spark on YARN两种运行模式介绍http://www.aboutyun.com/thread-12294-1-1.html(出处: about云开发)   问题导读 1.Spark在YARN中有几种模式? 2.Yarn Cluster模式,Driver程序在YARN中运行,应用的运行结果在什么地方可以查看? 3.由client向ResourceManager提交请求,并上传jar到HDFS上包含哪些步骤? 4.传递给app的参数应该通过什么来指定? 5.什么模式下最后将结果输

javaweb学习总结(二十一)——JavaWeb的两种开发模式【转】

原文 地址:http://www.cnblogs.com/xdp-gacl/p/3908610.html SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(j