本篇文章给大家分享的是有关如何进行spark on yarn 的资源调度器设置.,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联建站主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站设计、程序开发、网站优化、微网站、成都微信小程序等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站设计制作、网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。
最近一段时间 发现了一个问题. 就是即便在整个集群 不忙的时候, 也会某几个节点, 会被spark on yarn 的任务跑满.
而不是把任务均匀的分配到到多几个节点上.
百思不解.
于是开始各个方面的调查. 从spark 方面没有发现什么问题. 回过头来看yarn .
发现原来使我们的资源调度的配置上有点问题.
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.
问题就出在这里了. 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个在运行. 另外俩个要等待 .
这也符合我们前面看到的现象.
以上就是如何进行spark on yarn 的资源调度器设置.,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。