Yarn配置

刘超 1月前 ⋅ 5550 阅读   编辑

参数名

参数值 描述 在在平台情况、在哪个文件
hdp apache
  yarn.resourcemanager.am.max-attempts
2  
http地址      
yarn.resourcemanager.address ${yarn.resourcemanager.hostname}:8032 ResourceManager对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
yarn.resourcemanager.scheduler.address ${yarn.resourcemanager.hostname}:8030 ResourceManager 对 ApplicationMaster 暴露的访问地址。ApplicationMaster 通过该地址向 RM 申请资源、释放资源等
yarn.resourcemanager.resource-tracker.address ${yarn.resourcemanager.hostname}:8031 ResourceManager 对 NodeManager 暴露的地址.。NodeManager 通过该地址向 RM 汇报心跳,领取任务等
yarn.resourcemanager.admin.address ${yarn.resourcemanager.hostname}:8033 ResourceManager 对管理员暴露的访问地址。管理员通过该地址向 RM 发送管理命令等。
yarn.resourcemanager.webapp.address ${yarn.resourcemanager.hostname}:8088 ResourceManager 对外 web ui 地址。用户可通过该地址在浏览器中查看集群各类信息
yarn.log.server.url http://hostname:19888/jobhistory/logs log server的地址
心跳
yarn.resourcemanager.nodemanagers.heartbeat-interval-ms 1000(毫秒) NodeManager 心跳间隔
调度器
yarn.resourcemanager.scheduler.class -- 容量调度器
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
-- 公平调度器
org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
启用的资源调度器主类。目前可用的有 FIFO、Capacity Scheduler 和 Fair Scheduler。
yarn.resourcemanager.resource-tracker.client.thread-count 50 处理来自 NodeManager 的 RPC 请求的 Handler 数目
yarn.resourcemanager.scheduler.client.thread-count 50 处理来自 ApplicationMaster 的 RPC 请求的 Handler 数目
yarn.resourcemanager.nodes.include-path  '' NodeManager 黑白名单。如果发现若干个 NodeManager 存在问题,比如故障率很高,任务运行失败率高,则可以将之加入黑名单中。注意,这两个配置参数可以动态生效。(调用一个 refresh 命令即可)
yarn.resourcemanager.nodes.exclude-path ''
  yarn.resourcemanager.nodemanagers.heartbeat-interval-ms
资源 内存

在 YARN 中,资源管理由 ResourceManager 和 NodeManager 共同完成,其中,ResourceManager 中的调度器负责资源的分配,而 NodeManager 则负责资源的供给和隔离。ResourceManager 将某个 NodeManager 上资源分配给任务(这就是所谓的“资源调度”)后,NodeManager 需按照要求为任务提供相应的资源,甚至保证这些资源应具有独占性,为任务运行提供基础的保证,这就是所谓的资源隔离.
默认情况下,YARN 采用了线程监控的方法判断任务是否超量使用内存,一旦发现超量,则直接将其杀死。由于Cgroups 对内存的控制缺乏灵活性(即任务任何时刻不能超过内存上限,如果超过,则直接将其杀死或者报 OOM),而 Java 进程在创建瞬间内存将翻倍,之后骤降到正常值,这种情况下,采用线程监控的方式更加灵活(当发现进程树内存瞬间翻倍超过设定值时,可认为是正常现象,不会将任务杀死),因此 YARN 未提供 Cgroups 内存隔离机制。

内存参数关系图:

  yarn.nodemanager.resource.memory-mb 8192 NodeManager 总的可用物理内存。注意,该参数是不可修改的,一旦设置,整个运行过程中不可动态修改。注意,如果你的节点内存资源不够 8GB,则需要调减小这个值,而 YARN 不会智能的探测节点的物理内存总量。
  yarn.scheduler.minimum-allocation-mb 1024 单个可申请的最小/最大内存资源量。比如设置为 1024 和 3072,则运行 MapRedce 作业时,每个 Task 最少可申请 1024MB 内存,最多可申请 3072MB 内存
  yarn.scheduler.maximum-allocation-mb 8192
  yarn.nodemanager.pmem-check-enabled true 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true
  虚拟内存
  yarn.nodemanager.vmem-pmem-ratio 2.1 每使用 1MB 物理内存,最多可用的虚拟内存数
  yarn.nodemanager.vmem-check-enabled
  是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true
  CPU
  yarn.scheduler.capacity.resource-calculator
org.apache.hadoop.yarn.util.resource.DominantResourceCalculator   不管是哪个版本(hdp、apache、cdh)的spark,在设置executor cores,无论设置为几,都只有一个核,这个问题跟yarn相关,默认YARN不会对cpu进行调度和分配,只会考虑内存。打开该功能,需要在yarn-site.xml中增加以下配置
  yarn.scheduler.minimum-allocation-vcores 1 单个可申请的最小/最大虚拟 CPU 个数。比如设置为 1 和 4,则运行 MapRedce 作业时,每个 Task 最少可申请 1 个虚拟 CPU,最多可申请 4 个虚拟 CPU
  yarn.scheduler.maximum-allocation-vcores 32
  虚拟cpu核数
  yarn.nodemanager.resource.cpu-vcores 8 NodeManager总的可用虚拟CPU个数
  磁盘、硬盘
  yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 90 节点磁盘使用上限,如果超过90%,拒绝写入
 
运行配置
  yarn.nodemanager.aux-services mapreduce_shuffle,spark_shuffle,spark2_shuffle '' NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序
  mapreduce_shuffle,spark_shuffle,spark2_shuffle org.apache.hadoop.mapred.ShuffleHandler
  yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler
  yarn.nodemanager.aux-services.spark2_shuffle.class org.apache.spark.network.yarn.YarnShuffleService
  yarn.nodemanager.aux-services.spark2_shuffle.classpath {{stack_root}}/${hdp.version}/spark2/aux/*
  yarn.nodemanager.aux-services.spark_shuffle.class org.apache.spark.network.yarn.YarnShuffleService
  yarn.nodemanager.aux-services.spark_shuffle.classpath {{stack_root}}/${hdp.version}/spark/aux/*
日志
  本地日志
  yarn.nodemanager.local-dirs /hadoop/yarn/local ${hadoop.tmp.dir}/nm-local-dir 存放application执行本地文件的根目录,执行完毕后删除,按用户名存储。注意,这个参数通常会配置多个目录,已分摊磁盘IO负载
  yarn.nodemanager.log-dirs ${yarn.log.dir}/userlogs 存放application本地执行日志的根目录,执行完毕后删除,按用户名存储
  yarn.nodemanager.log.retain-seconds 10800(3小时) NodeManager上日志最多存放时间(不启用日志聚集功能时有效
日志聚合
yarn.log-aggregation-enable
true 执行结束后收集各个container本地的日志
yarn.nodemanager.remote-app-log-dir

/app-logs

/tmp/logs 任务日志在HDFS上的聚合路径
yarn.nodemanager.remote-app-log-dir-suffix

logs

  聚合日志后的存放地址由 ${remote-app-log-dir}/${user}/{thisParam}构成
yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds

3600秒(一小时)

  指定日志聚合时间间隔。 运行应用程序的日志按指定的时间间隔进行聚合。
日志归档
yarn.nodemanager.remote-app-log-archive-dir /tmp/archived 任务日志在HDFS上的归档路径
yarn.log-aggregation.archive.files.minimum 5000 任务日志归档最小文件数。当“yarn.nodemanager.remote-app-log-dir”文件夹下文件数大于等于该设置的值时归档任务启动
yarn.log-aggregation.archive-check-interval-seconds -1 任务日志归档任务启动周期(秒)。只有日志文件数达到“yarn.log-aggregation.archive.files.minimum”设置值时日志文件才会被归档。周期设置为“0”或“-1”时归档功能禁用
日志清理
yarn.log-aggregation.retain-seconds 2592000(秒,30天) 1296000 任务日志在HDFS上的保留时间。设置为“-1”时日志文件永久保存
yarn.log-aggregation.retain-check-interval-seconds 86400(秒,1天) 86400 任务日志清理任务的检查周期(秒)。设置为“-1”时检查周期为日志保留时间的十分之一
  yarn.nodemanager.delete.debug-delay-sec 600 application执行结束后延迟10min删除本地文件及日志
log4j
yarn-log4j
队列  

User Limit Factor

The upper limit multiple of the queue’s configured minimum capacity that one user’s applications can utilize.  

User Limit Factor

The minimum guaranteed percentage of queue capacity allocated for a user's applications.  

Maximum Applications

The maximum number of applications that can be running or pending in this specific queue at any point of time.

 

Maximum AM Resource

The maximum percentage of total capacity of this specific queue that can be utilized by application masters at any point in time.

 

Ordering policy

The ordering policy to use for applications scheduled to this queue. 1、FIFO: Applications get available capacity based on order they are submitted 2、Fair: Applications will get fair share of capacity, regardless of order submitted

 

mapreduce.job.queuename

market

如果执行引擎是mapreduce,用该参数指定队列

 

hive.server2.tez.default.queues

tez.queue.name

market

如果执行引擎是tez,用该参数指定队列

 
mr mapreduce.application.framework.path  

用于升级mr

 
tez tez.lib.uris  

用于升级tez

 
spark spark.yarn.archive  

用于升级spark

 


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: