Spark on yarn CapacityScheduler中的ResourceCalculator(资源计算器)
2016-04-08 18:02
567 查看
首先,是一个实际的问题(为了方便描述考虑一个简单的情况):
在spark on yarn上面进行资源申请,我们申请了10个container(每个container都是1G内存,1个core),这是集群中有一个nodemanager,有10G内存,5个core。
在默认配置情况下,yarn就有可能将这10个container都发送到这个nodemanager上(即使集群上还有其他nodemanager有资源空闲),这就会导致,有5个container需要等到另外5个container用完core之后才能执行其自己的任务。
上述问题,出现的原因就是CapacityScheduler在计算集群可用资源的时候,默认使用的是DefaultResourceCalculator这个资源计算器,而该资源计算器,存在一个很大的问题,就是在计算可用资源量的时候只考虑到了内存这一单个维度的资源情况。
所以在上述问题nodemanager内存够用的情况下,就出现了其他container空等core的情况。
在这种情况下,我们应该考虑使用DominantResourceCalculator,该资源计算器在计算资源的时候会综合考虑cpu和内存的情况,来决定yarn最后的调度。
通过配置 capacity-scheduler.xml 来进行资源计算器的配置
参考:DominantResourceCalculator原理
在spark on yarn上面进行资源申请,我们申请了10个container(每个container都是1G内存,1个core),这是集群中有一个nodemanager,有10G内存,5个core。
在默认配置情况下,yarn就有可能将这10个container都发送到这个nodemanager上(即使集群上还有其他nodemanager有资源空闲),这就会导致,有5个container需要等到另外5个container用完core之后才能执行其自己的任务。
上述问题,出现的原因就是CapacityScheduler在计算集群可用资源的时候,默认使用的是DefaultResourceCalculator这个资源计算器,而该资源计算器,存在一个很大的问题,就是在计算可用资源量的时候只考虑到了内存这一单个维度的资源情况。
在这种情况下,我们应该考虑使用DominantResourceCalculator,该资源计算器在计算资源的时候会综合考虑cpu和内存的情况,来决定yarn最后的调度。
通过配置 capacity-scheduler.xml 来进行资源计算器的配置
相关文章推荐
- 2016.4.7每日小结
- CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9
- mongodb数据库备份
- 外部别名
- <图形图像,动画,多媒体> 读书笔记 --- 音效
- oracle 优化相关的文章
- 基金介紹
- git 操作
- 匿名内部类
- 2014.4.5 shell script
- 栈帧
- 关于《构建之法》第八章的读后感
- LeetCode之11---Container With Most Water
- 5.jenkins使用Email Extension Plugin插件配置邮件通知
- 2016.04.01愚人节不愚人
- ARC下需要注意的内存管理
- NYOJ多边形重心问题
- php冒泡排序
- ARC下需要注意的内存管理
- 【MongoDB】mongoimport and mongoexport of data (一)