【MR】剖析YARN中uber模式

【MR】剖析YARN中uber模式

在看《Hadoop权威指南》时,看到关于uber模式的介绍
一,什么是uber模式
Uber模式简单地可以理解成JVM重用,该模式是Hadoop2.x开始引入的;以Uber模式运行MR作业,所有的Map任务和Reduce任务将会在Application Master所在的容器(container)中运行,也就是说整个MR作业运行的过程只会启动AM container,因为不需要启动mapper containers和 reducer containers。
这是一种针对MR小作业的优化机制。即如果作业足够小,则所有任务在一个JVM中完成要比为每个任务启动一个JVM更划算。

那什么任务算是小任务?
默认情况下,小任务就是小于10个mapper且只有1个reducer,并且输入分片大小小于一个HDFS块的大小。

二,uber模式原理
Yarn的默认配置会禁用uber组件,即不允许JVM重用。
首先,Resource Manager里的Application Manager会为每一个application(比如一个用户提交的MapReduce Job)在NodeManager里面申请一个container,然后在该container里面启动一个Application Master。container在Yarn中是分配资源的容器(内存、cpu、硬盘等),它启动时便会相应启动一个JVM。此时,Application Master便陆续为application包含的每一个任务(Map t任务和Reduce任务)向Resource Manager申请一个container。等每得到一个container后,便要求该container所属的NodeManager将此container启动,然后就在这个container里面执行相应的任务。等这个任务执行完后,这个container便会被NodeManager收回,而container所拥有的JVM也相应地被退出。在这种情况下,可以看出每一个JVM仅会执行一个任务, JVM并未被重用。

当uber功能被启用时
首先,Resource Manager里的Application Manager会为每一个application在NodeManager里面申请一个container,然后在该container里面启动一个Application Master。containe启动时便会相应启动一个JVM。此时,如果uber功能被启用,并且该application被认为是一个“小的application”,那么Application Master便会将该application包含的每一个任务依次在这个container里的JVM里顺序执行,直到所有任务被执行完。这样Application Master便不用再为每一个任务向Resource Manager去申请一个单独的container,最终达到了JVM重用(资源重用)的目的。

三,uber模式配置
在yarn-site.xml文件中,改变一下几个参数的配置即可启用uber模式。
mapreduce.job.ubertask.enable;默认值false;true启用user功能。
uber的默认配置
mapreduce.job.ubertask.maxmaps 最大map数,默认值:9
mapreduce.job.ubertask.maxreduces 最大reduce数,默认值:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值