码迷,mamicode.com
首页 > 其他好文 > 详细

Resource Allocation of Yarn

时间:2017-07-30 14:47:29      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:使用   基本   buffer   也会   jvm   客户   apache   适合   oop   

关键词:yarn 资源分配 mapreduce spark

 

 


 

简要指南

 

适合不想看太多原理细节直接上手用的人。

基本原则:

  • container分配的内存不等于机器实际用掉的内存。NM给container分配的内存是预留这么多内存,但实际用多少取决于你的-Xmx加上你的堆外内存。大部分堆外内存使用不多的情况下,实际主要就是JVM堆内存。
  • container内存是按yarn.scheduler.minimum-allocation-mb的整数倍分配的,用户设置的内存不足整数倍会向上取整,并且不会超过 yarn.scheduler.maximum-allocation-mb
  • 还有一个增量概念 yarn.scheduler.increment-allocation-mb (默认1024m),即如果yarn.scheduler.minimum-allocation-mb设置较大,假设4g,那客户端申请了4.5G内存,按道理最终container内存是要变成 4+4=8g 的,但有增量内存1024m配置的话,分配内存时会尝试 4+1=5g 是否能满足,从而避免内存资源浪费。
  • 所有上线的任务都要手动设置资源配置,尤其是内存。

 

MapReduce:

  • mapreduce.map.memory.mb表示给map的container申请的最大内存,即container内存;mapreduce.map.java.opts则是设置jvm启动的实际参数,其中堆内存-Xmx也是在这里设置,不能超过mapreduce.map.memory.mb,一般设置为0.75倍的mapreduce.map.memory.mb(只是建议,不一定),留给堆外内存一点空间。reduce同理。

 

Spark 1.x:

关于Spark On YARN相关的配置参数,请参考Spark配置参数。一般主要关注以下几个参数:
  • spark.driver.memory:默认值512m
  • spark.executor.memory:默认值512m
  • spark.yarn.am.memory:默认值512m
  • spark.yarn.executor.memoryOverhead:值为executorMemory * 0.07, with minimum of 384
  • spark.yarn.driver.memoryOverhead:值为driverMemory * 0.07, with minimum of 384
  • spark.yarn.am.memoryOverhead:值为AM memory * 0.07, with minimum of 384

  • --executor-memory/spark.executor.memory 控制 executor 的堆的大小,但是 JVM 本身也会占用一定的堆空间,比如内部的 String 或者直接 byte buffer,spark.yarn.XXX.memoryOverhead 属性决定向 YARN 请求的每个 executor 或dirver或am 的额外堆内存大小,默认值为 max(384, 0.07 * spark.executor.memory)。所以实际计算container内存的时候是 memory + memoryOverhead
  • 在 executor 执行的时候配置过大的 memory 经常会导致过长的GC延时,内存并不是越大越好。

spark core分配:

  • 默认的yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator , 这种时候的vcore会按container个数分配,而不是实际的spark core数。即设置了5个executor,每个executor2个core,实际除去ApplicationMaster和spark driver,最后只有5个vcore。
  • 改成org.apache.hadoop.yarn.util.resource.DominantResourceCalculator,上述案例则会变成10个vcore。暂未测试和看代码确定是否能客户端配置生效,一般服务端配置,在ambari里或部分语境下,有时也叫CPU-schedule的ResourceCalculator,相比default版的只考虑memory,dominant的同时考虑了memory和cpu。

 

 

Reference(值得一读):

Resource Allocation of Yarn

标签:使用   基本   buffer   也会   jvm   客户   apache   适合   oop   

原文地址:http://www.cnblogs.com/lhfcws/p/7258928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!