spark申请yarn资源计算

线上示例

spark任务参数:
spark.executor.instances: 15
spark.executor.memory :8G
spark.driver.memory:4G
计算申请的内存应该是 14G+158G=124G
提交到yarn上,申请到的内存是143360M=140G
相差16G,多出来的16G是怎么来的?
image.png

spark on yarn参数

一个executor会申请到一个固定资源大小的container,相当于一个JVM进程,同时yarn也会保留一个container用来跑ApplicationMaster,就是spark任务中的driver。

yarn的默认参数:
yarn.scheduler.minimum-allocation-mb 每个container的最小内存值yarn.scheduler.maximum-allocation-mb 每个container的最大内存值**
spark的executor申请的container大小必须在两者之间,同时也要求是yarn.scheduler.minimum-allocation-mb的整数倍。
spark on yarn有一个memoryOverhead的概念,是为了防止内存溢出额外设置的一个值,可以用spark.yarn.executor.memoryOverhead和参数手动设置,如果没有设置,默认memoryOverhead的大小由以下公式计算:
memoryOverhead = max(spark.executor.memory * MEMORY_OVERHEAD_FACTOR,384)
MEMORY_OVERHEAD_FACTOR(默认0.1),对应参数spark.memory.fraction

结果

综上可以计算:
spark.executor.instances: 15
spark.executor.memory :8G
spark.driver.memory:4G
yarn.scheduler.minimum-allocation-mb :1G
申请16个container,其中driver内存是:4G+max(4G0.1,384M)=4506M,向上取1G的整数倍,就是5G
executor内存是:8G+max(8G
0.1,384M)=9011M,向上取1G的整数倍,就是9G
最终申请到yarn资源为 5G+15*9G=140G=143360M,与实际相符
image.png

参考:https://zhuanlan.zhihu.com/p/436004534?utm_id=0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值