YARN SPARK任务计算内存解析

1. spark.driver.memory:默认值为512M,表示driver进程的内存大小。
2. spark.executor.memory:默认值为512M,表示每个executor进程的内存大小。
3. spark.yarn.am.memory:默认值为512M,表示ApplicationMaster进程的内存大小。4.spark.yarn.driver.memoryOverhead:driver memory * 0.10, with minimum of 384
5.spark.yarn.executor.memoryOverhead:executor memory * 0.10, with minimum of 384
6.spark.yarn.am.memoryOverhead:am memory * 0.10, with minimum of 384
7. executor-cores:表示每个executor进程的CPU核心数。

这些参数主要用于控制YARN资源管理器(ResourceManager)分配给应用程序的内存。

1. yarn.app.mapreduce.am.resource.mb:表示ApplicationMaster(AM)能申请的最大内存。
2. yarn.nodemanager.resource.memory-mb:表示NodeManager能申请的最大内存。
3. yarn.scheduler.minimum-allocation-mb:表示任务调度器分配给一个container的最小内存。
4. yarn.scheduler.maximum-allocation-mb:表示任务调度器分配给一个container的最大内存。

1. executor的jvm进程:每个executor可以并行执行多少个task由其设定的vcore数决定。
2. container:一个container对应一个JVM进程(也就是一个executor)。
3. task:每个task单独调度。
4. stage:job会被切分成stages,每个stage切分成task,每个task单独调度。

在Spark中,每个container对应一个JVM进程(也就是一个executor)。在指定container的vcore使用说明时,需要根据使用的引擎类型进行调整。

  1. 如果使用的是MR或TEZ引擎,那么即使您指定了vcore数,也只会使用一个vcore,因为这些引擎是基于进程模型实现的。
  2. 如果使用的是Spark引擎,那么您可以根据需要指定vcore数,因为Spark是基于线程模型实现的。

container的内存使用说明:
yarn.scheduler.minimum-allocation-mb 是Container的内存基本单位,也就是说Container的内存必须是yarn.scheduler.minimum-allocation-mb的整数倍,

在FAIR调度策略中设置了yarn.scheduler.increment-allocation-mb 规整参数,则按照规整参数的整数倍来规整。


比如:yarn.scheduler.minimum-allocation-mb 设置为 2G,
如果内存申请为 512M,512+384<2048M,会被分配 2G 内存,
如果内存申请为 3G,3072+384=3456M<4096M,会被分配 4G 内存,
如果申请内存为 6G,6144+614=6758<8192M,会被分配 8G 内存, 【max(6144*0.1, 384)=614】
所以当设定–executor-memory 为3G时,Container实际内存并非3G。

总结:

FAIR公平调度策略使用yarn.scheduler.increment-allocation-mb的倍数,FIFO和Capacity Scheduler取yarn.scheduler.minimum-allocation-mb的倍数:

 内存=

executor:(spark.executor.memory+spark.yarn.executor.memoryOverhead)(yarn.scheduler.increment-allocation-mb规整参数向上规整)*spark.executor.instances 

+

driver:(spark.driver.memory+spark.yarn.driver.memoryOverhead)(yarn.scheduler.increment-allocation-mb规整参数向上规整)*1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值