spark on yarn 的资源调度器设置.

最近一段时间  发现了一个问题. 就是即便在整个集群  不忙的时候, 也会某几个节点, 会被spark on yarn 的任务跑满. 

而不是把任务均匀的分配到到多几个节点上. 

百思不解. 

于是开始各个方面的调查.  从spark 方面没有发现什么问题. 回过头来看yarn . 

发现原来使我们的资源调度的配置上有点问题. 


  <property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <!--value>org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator</value-->
    <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
    <description>
      The ResourceCalculator implementation to be used to compare
      Resources in the scheduler.
      The default i.e. DefaultResourceCalculator only uses Memory while
      DominantResourceCalculator uses dominant-resource to compare
      multi-dimensional resources such as Memory, CPU etc.
    </description>
  </property>


问题就出在这里了.  default  调度器, 只关注node 的内存 情况, 根据内存情况来分派任务. 
这就是导致, 如果一个spark 任务向yarn 申请container 的时候, yarn 只关注了 某几个点的内存情况. 

如果内存满足 spark 的要求, 就可能把所有的container 都分派到一个node 去,导致这个node 节点 负载飚高. 

比如 spark 申请 10个 1g 内存的container . 然后 yarn 发现有2个节点  各有5g 空闲内存,  但是却只有3个cpu 空闲. 

那么可能就会只有这俩node 来跑这10个container , 而不是把10个container 分配到10个node上去.

然后就出现我们前面说的情况.  内存充足但是cpu不足. 导致spark 的container 只有3个在运行. 另外俩个要等待 .  

这也符合我们前面看到的现象.  




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-2135645/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/133735/viewspace-2135645/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值