一、Spark On YARN 动态资源
利用Spark的动态资源机制可以增加队列的利用率,减少空置,占用的无效使用。
原理:
考虑如下场景:
在Spark On YARN的运行机制下,有一个Application申请了50个executor 每个20G memory,10 个core,Applicaiton有10个job,每个job1个stage。
假设其中一个Job只有一个task并且需要运行50分钟,这时Spark将只使用一个exceutor进行处理, 剩余的49个executor 将空闲50分钟,相当于什么都没做。
打开这个功能后将自动释放这49个executor , 后续stage如果需要资源Spark将再次向YARN申请。
使用时增加如下参数即可:
参数名称 | 默认值 | 说明 |
---|---|---|
spark.dynamicAllocation.enabled | false | 是否使用动态资源分配,根据工作负载对应用程序executor进行扩展 |
spark.dynamicAllocation.executorIdleTimeout | 60s | 如果启用了动态分配并且executor已经空闲超过这个时间,executor将被释放 |
spark.dynamicAllocation.cachedExecutorIdleTimeout |