YARN配置

说明

最近关于YARN的配置,尤其是调试日志的信息,总是记不住,留个记录,方便以后查看。

转自董西成的博客,在此感谢董西成老师的分享。

如需转载,请注明出处,链接列表如下

RM与NM相关参数
权限与日志聚集相关参数
MapReduce相关参数
Fair Scheduler相关参数
Capacity Scheduler相关参数

RM与NM相关参数

ResourceManager

参数名称 作用 默认值
yarn.resourcemanager.address ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。 ${yarn.resourcemanager.hostname}:8032
yarn.resourcemanager.scheduler.address ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。 ${yarn.resourcemanager.hostname}:8030
yarn.resourcemanager.resource-tracker.address ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。 ${yarn.resourcemanager.hostname}:8031
yarn.resourcemanager.admin.address ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。 ${yarn.resourcemanager.hostname}:8033
yarn.resourcemanager.webapp.address ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。 ${yarn.resourcemanager.hostname}:8088
yarn.resourcemanager.scheduler.class 启用的资源调度器主类。目前可用的有FIFO、Capacity Scheduler和Fair Scheduler。 org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
yarn.resourcemanager.resource-tracker.client.thread-count 处理来自NodeManager的RPC请求的Handler数目。 50
yarn.resourcemanager.scheduler.client.thread-count 处理来自ApplicationMaster的RPC请求的Handler数目。 50
yarn.scheduler.minimum-allocation-mb/ yarn.scheduler.maximum-allocation-mb 单个可申请的最小/最大内存资源量。比如设置为1024和3072,则运行MapRedce作业时,每个Task最少可申请1024MB内存,最多可申请3072MB内存。 1024/8192
yarn.scheduler.minimum-allocation-vcores / yarn.scheduler.maximum-allocation-vcores 单个可申请的最小/最大虚拟CPU个数。比如设置为1和4,则运行MapRedce作业时,每个Task最少可申请1个虚拟CPU,最多可申请4个虚拟CPU。什么是虚拟CPU,可阅读我的这篇文章:“YARN 资源调度器剖析”。 1/32
yarn.resourcemanager.nodes.include-path /yarn.resourcemanager.nodes.exclude-path NodeManager黑白名单。如果发现若干个NodeManager存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个refresh命令即可) ""
yarn.resourcemanager.nodemanagers.heartbeat-interval-ms NodeManager心跳间隔 1000(毫秒)

NodeManager

参数名称 作用 默认值
yarn.nodemanager.resource.memory-mb NodeManager总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不可动态修改。另外,该参数的默认值是8192MB,即使你的机器内存不够8192MB,YARN也会按照这些内存来使用(傻不傻?),因此,这个值通过一定要配置。不过,Apache已经正在尝试将该参数做成可动态修改的。 8192
yarn.nodemanager.vmem-pmem-ratio 每使用1MB物理内存,最多可用的虚拟内存数。 2.1
yarn.nodemanager.resource.cpu-vcores NodeManager总的可用虚拟CPU个数。 8
yarn.nodemanager.local-dirs 中间结果存放位置,类似于1.0中的mapred.local.dir。注意,这个参数通常会配置多个目录,已分摊磁盘IO负载。 ${hadoop.tmp.dir}/nm-local-dir
yarn.nodemanager.log-dirs 日志存放地址(可配置多个目录)。 ${yarn.log.dir}/userlogs
yarn.nodemanager.log.retain-seconds NodeManager上日志最多存放时间(不启用日志聚集功能时有效)。 10800(3小时)
yarn.nodemanager.aux-services NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 默认值:""

权限与日志聚集

日志聚集

参数名称 作用 默认值
yarn.log-aggregation-enable 是否启用日志聚集功能。 false
yarn.log-aggregation.retain-seconds 在HDFS上聚集的日志最多保存多长时间。 -1
yarn.log-aggregation.retain-check-interval-seconds 多长时间检查一次日志,并将满足条件的删除,如果是0或者负数,则为上一个值的1/10。 -1
yarn.nodemanager.remote-app-log-dir 当应用程序运行结束后,日志被转移到的HDFS目录(启用日志聚集功能时有效)。 /tmp/logs
yarn.log-aggregation.retain-seconds 远程日志目录子目录名称(启用日志聚集功能时有效)。 日志将被转移到目录{yarn.nodemanager.remote-app-log-dir}/{user}/${thisParam}下

MapReduce

本节所有配置都写在mapred-site.xml中

MapReduce JobHistory

参数名称 作用 默认值
mapreduce.jobhistory.address MapReduce JobHistory Server地址。 0.0.0.0:10020
mapreduce.jobhistory.webapp.address MapReduce JobHistory Server Web UI地址。 0.0.0.0:19888
mapreduce.jobhistory.intermediate-done-dir MapReduce作业产生的日志存放位置。 /mr-history/tmp
mapreduce.jobhistory.done-dir MR JobHistory Server管理的日志的存放位置。 /mr-history/done

MapReduce作业配置

下面的参数可以配置在客户端的mapred-site.xml中,作为MapReduce作业的缺省配置。也可以在提交作业时单独指定这些参数

参数名称 说明 缺省值
mapreduce.job.name 作业名称
mapreduce.job.priority 作业优先级 NORMAL
yarn.app.mapreduce.am.resource.mb ApplicationMaster占用的内存量 1536
yarn.app.mapreduce.am.resource.cpu-vcores ApplicationMaster占用的虚拟CPU个数 1
mapreduce.am.max-attempts ApplicationMaster最大失败尝试次数 2
mapreduce.map.memory.mb 每个Map Task需要的内存量 1024
mapreduce.map.cpu.vcores 每个Map Task需要的虚拟CPU个数 1
mapreduce.map.maxattempts Map Task最大失败尝试次数 4
mapreduce.reduce.memory.mb 每个Reduce Task需要的内存量 1024
mapreduce.reduce.cpu.vcores 每个Reduce Task需要的虚拟CPU个数 1
mapreduce.reduce.maxattempts Reduce Task最大失败尝试次数 4
mapreduce.map.speculative 是否对Map Task启用推测执行机制 FALSE
mapreduce.reduce.speculative 是否对Reduce Task启用推测执行机制 FALSE
mapreduce.job.queuename 作业提交到的队列 default
mapreduce.task.io.sort.mb 任务内部排序缓冲区大小 100
mapreduce.map.sort.spill.percent Map阶段溢写文件的阈值(排序缓冲区大小的百分比) 0.8
mapreduce.reduce.shuffle.parallelcopies Reduce Task启动的并发拷贝数据的线程数目 5

Fair Scheduler相关参数

本节的参数需要在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler 才会生效。Fair Scheduler的配置选项包括两部分,其中一部分在yarn-site.xml中,主要用于配置调度器级别的参数,另外一部分在一个自定义配置文件(默认是fair-scheduler.xml)中,主要用于配置各个队列的资源量、权重等信息。

yarn-site.xml

参数名称 说明 缺省值
yarn.scheduler.fair.allocation.file 自定义XML配置文件所在位置,该文件主要用于描述各个队列的属性,比如资源量、权重等,具体配置格式将在后面介绍。
yarn.scheduler.fair.user-as-default-queue 当应用程序未指定队列名时,是否指定用户名作为应用程序所在的队列名。如果设置为false或者未设置,所有未知队列的应用程序将被提交到default队列中 true
yarn.scheduler.fair.preemption 是否启用抢占机制 false
yarn.scheduler.fair.sizebasedweight 在一个队列内部分配资源时,默认情况下,采用公平轮询的方法将资源分配各各个应用程序,而该参数则提供了另外一种资源分配方式:按照应用程序资源需求数目分配资源,即需求资源数量越多,分配的资源越多。 false
yarn.scheduler.assignmultiple 是否启动批量分配功能。当一个节点出现大量资源时,可以一次分配完成,也可以多次分配完成。 false
yarn.scheduler.fair.max.assign 如果开启批量分配功能,可指定一次分配的container数目。 -1,表示不限制。
yarn.scheduler.fair.locality.threshold.node 当应用程序请求某个节点上资源时,它可以接受的可跳过的最大资源调度机会。当按照分配策略,可将一个节点上的资源分配给某个应用程序时,如果该节点不是应用程序期望的节点,可选择跳过该分配机会暂时将资源分配给其他应用程序,直到出现满足该应用程序需的节点资源出现。通常而言,一次心跳代表一次调度机会,而该参数则表示跳过调度机会占节点总数的比例 -1.0,表示不跳过任何调度机会
yarn.scheduler.fair.locality.threshold.rack 当应用程序请求某个机架上资源时,它可以接受的可跳过的最大资源调度机会。
yarn.scheduler.increment-allocation-mb 内存规整化单位 默认是1024,这意味着,如果一个Container请求资源是1.5GB,则将被调度器规整化为ceiling(1.5 GB / 1GB) * 1G=2GB。
yarn.scheduler.increment-allocation-vcores 虚拟CPU规整化单位 默认是1,含义与内存规整化单位类似。

自定义配置文件

Fair Scheduler允许用户将队列信息专门放到一个配置文件(默认是fair-scheduler.xml),对于每个队列,管理员可配置以下几个选项:

参数名称 说明 缺省值
minResources 最少资源保证量,设置格式为“X mb, Y vcores”,当一个队列的最少资源保证量未满足时,它将优先于其他同级队列获得资源,对于不同的调度策略(后面会详细介绍),最少资源保证量的含义不同,对于fair策略,则只考虑内存资源,即如果一个队列使用的内存资源超过了它的最少资源量,则认为它已得到了满足;对于drf策略,则考虑主资源使用的资源量,即如果一个队列的主资源量超过它的最少资源量,则认为它已得到了满足。
maxResources 最多可以使用的资源量,fair scheduler会保证每个队列使用的资源量不会超过该队列的最多可使用资源量。
maxRunningApps 最多同时运行的应用程序数目。通过限制该数目,可防止超量Map Task同时运行时产生的中间输出结果撑爆磁盘。
minSharePreemptionTimeout 最小共享量抢占时间。如果一个资源池在该时间内使用的资源量一直低于最小资源量,则开始抢占资源。
schedulingMode/schedulingPolicy 队列采用的调度模式,可以是fifo、fair或者drf。
aclSubmitApps 可向队列中提交应用程序的Linux用户或用户组列表,默认情况下为“*”,表示任何用户均可以向该队列提交应用程序。需要注意的是,该属性具有继承性,即子队列的列表会继承父队列的列表。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。
aclAdministerApps 该队列的管理员列表。一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序。

Capacity Scheduler相关参数

在Capacity Scheduler的配置文件中,队列queueX的参数Y的配置名称为yarn.scheduler.capacity.queueX.Y,为了简单起见,我们记为Y,则每个队列可以配置的参数如下:

资源分配相关参数

参数名称 说明 缺省值
capacity 队列的资源容量(百分比)。 当系统非常繁忙时,应保证每个队列的容量得到满足,而如果每个队列应用程序较少,可将剩余资源共享给其他队列。注意,所有队列的容量之和应小于100。
maximum-capacity 队列的资源使用上限(百分比)。由于存在资源共享,因此一个队列使用的资源量可能超过其容量,而最多使用资源量可通过该参数限制。
minimum-user-limit-percent 每个用户最低资源保障(百分比)。任何时刻,一个队列中每个用户可使用的资源量均有一定的限制。当一个队列中同时运行多个用户的应用程序时中,每个用户的使用资源量在一个最小值和最大值之间浮动,其中,最小值取决于正在运行的应用程序数目,而最大值则由minimum-user-limit-percent决定。比如,假设minimum-user-limit-percent为25。当两个用户向该队列提交应用程序时,每个用户可使用资源量不能超过50%,如果三个用户提交应用程序,则每个用户可使用资源量不能超多33%,如果四个或者更多用户提交应用程序,则每个用户可用资源量不能超过25%。
user-limit-factor 每个用户最多可使用的资源量(百分比)。比如,假设该值为30,则任何时刻,每个用户使用的资源量不能超过该队列容量的30%。

现在应用程序数目相关参数

参数名称 说明 缺省值
maximum-applications 集群或者队列中同时处于等待和运行状态的应用程序数目上限,这是一个强限制,一旦集群中应用程序数目超过该上限,后续提交的应用程序将被拒绝,所有队列的数目上限可通过参数yarn.scheduler.capacity.maximum-applications设置(可看做默认值),而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum-applications设置适合自己的值。 10000
maximum-am-resource-percent 集群中用于运行应用程序ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的应用程序数目。该参数类型为浮点型。所有队列的ApplicationMaster资源比例上限可通过参数yarn.scheduler.capacity. maximum-am-resource-percent设置(可看做默认值),而单个队列可通过参数yarn.scheduler.capacity.<queue-path>. maximum-am-resource-percent设置适合自己的值。 0.1,表示10%

队列访问和权限控制参数

参数名称 说明 缺省值
state 队列状态可以为STOPPED或者RUNNING,如果一个队列处于STOPPED状态,用户不可以将应用程序提交到该队列或者它的子队列中,类似的,如果ROOT队列处于STOPPED状态,用户不可以向集群中提交应用程序,但正在运行的应用程序仍可以正常运行结束,以便队列可以优雅地退出。
acl_submit_applications 限定哪些Linux用户/用户组可向给定队列中提交应用程序。需要注意的是,该属性具有继承性,即如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。
acl_administer_queue 为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。同样,该属性具有继承性,如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容