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.enabled
为true
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:
启动参数不设置:
界面出现:
UI界面出现了dead Excutors
结果:出行了动态分配资源
启动参数设置动态分配为false:
UI界面没有出现dead
结论:动态资源参数设置false在sub-mit设置生效(可能版本差异)