spark2.2中在任务调度中,增加了黑名单机制,提高了资源分配的效率。不同条件分别会将executors和整个节点加入黑名单。但是加入黑名单,也是有时间限制的,我们可以自定义时间,超过了这个时间,将会被资源管理器回收。对于如何配置,大家可参考下面。
配置属性
黑名单机制配置属性有哪些?明确的是第一个属性spark.blacklist.enabled,后面标有试验属性的,spark2.2还在测试阶段,相信spark2.3会正式发布
spark.blacklist.enabled
默认值:false
也就是说默认是不开启的。
说明
如果设置为“true”,如果有太多的任务失败,他将会被列入黑名单,阻止spark 从executors 调度任务.黑名单算法由"spark.blacklist"配置项控制。
spark.blacklist.timeout
默认值:1h说明:
【试验】一个节点或则executor被列入黑名单多长时间,被移除黑名单后,尝试运行新的任务
spark.blacklist.task.maxTaskAttemptsPerExecutor
默认值:1
说明:
【试验】对于给定的任务,重试多少次,executor会被列入黑名单
spark.blacklist.task.maxTaskAttemptsPerNode
默认值:2
说明:
【试验】对于给定的任务,重试多少次,一个节点会被列入黑名单
spark.blacklist.stage.maxFailedTasksPerExecutor
默认值:2
说明:
【试验】一个executor必须失败多少不同任务,在某个stage内,executor 被列入黑名单之前
spark.blacklist.stage.maxFailedExecutorsPerNode
默认值:2
说明:
【试验】在某个stage,有多少不同的executors 被列入黑名单,在某个stage内,整个节点被列入黑名单。
spark.blacklist.application.maxFailedTasksPerExecutor
默认值:2
说明:
【试验】对于整个应用程序executor 被列入黑名单前,executor必须失败多少不同的任务。黑名单的executor,如果spark.blacklist.timeout过了超时时间
将会自动添加到可用资源池中,并标记为空闲,由群集管理器回收。
spark.blacklist.application.maxFailedExecutorsPerNode
默认值:2
说明:
【试验】对于整个节点executor 被列入黑名单前,executor必须失败多少不同的任务。黑名单的executor,如果spark.blacklist.timeout过了超时时间
将会自动添加到可用资源池中,并标记为空闲,由群集管理器回收。
spark.blacklist.killBlacklistedExecutors
默认值:false
如果设置为true,当它们被列入黑名单后,允许spark自动kill, 和尝试重建executors 。需要注意整个节点被列入黑名单,节点的所有executors 将会被kill.
如何配置属性:
上面的可以在 spark-defaults.conf配置,或则通过命令行配置。spark配置分为很多种,比如运行环境,Shuffle Behavior,Spark UI,内存的配置等。黑名单属于调度配置。
参考官网:
http://spark.apache.org/docs/latest/configuration.html