spark动态资源参数在代码设置不生效测试

官方解释

Spark属性主要可以分为两种:一种与部署相关,例如“ spark.driver.memory”,“ spark.executor.instances”,SparkConf在运行时通过编程设置时,此类属性可能不会受到影响,或者行为取决于您选择的集群管理器和部署模式,因此建议您通过配置文件或spark-submit命令行选项进行设置;另一个主要与Spark运行时控件有关,例如“ spark.task.maxFailures”,可以用任何一种方式设置这种属性。

spark.dynamicAllocation.enabled
默认情况下是false,我的集群默认是true,版本号为:2.4.0-CDH6.2.1

Spark提供了一种机制,可以根据工作负载动态调整应用程序占用的资源。这意味着,如果不再使用资源,您的应用程序可以将资源返还给群集,并在以后有需求时再次请求它们

使用此功能有两个要求:

1.应用程序必须设置 spark.dynamicAllocation.enabledtrue

2.必须 在同一集群中的每个工作节点上设置一个External shuffle service ,并spark.shuffle.service.enabled在您的应用程序中将其设置为true。External shuffle service的目的是允许executors被删除而不会删除executors编写的shuffle文件

下面的配置也与此有关: spark.dynamicAllocation.minExecutors

 spark.dynamicAllocation.maxExecutors

spark.dynamicAllocation.initialExecutors 

spark.dynamicAllocation.executorAllocationRatio

 

代码设置为false:

 

spark动态资源参数在代码设置不生效测试

启动参数不设置:

spark动态资源参数在代码设置不生效测试

界面出现:

spark动态资源参数在代码设置不生效测试

UI界面出现了dead Excutors

spark动态资源参数在代码设置不生效测试

结果:出行了动态分配资源

 

 启动参数设置动态分配为false:

spark动态资源参数在代码设置不生效测试

 

UI界面没有出现dead

 

spark动态资源参数在代码设置不生效测试

 

结论:动态资源参数设置false在sub-mit设置生效(可能版本差异)