Spark独立集群资源不足时应用被杀,如何修改等待资源的超时时长?
Spark Standalone集群资源等待超时配置修改方案
你遇到的作业提交后无可用资源、等待固定时长后被杀死的问题,可通过修改以下Spark配置调整超时时间:
核心配置说明
spark.scheduler.maxRegisteredResourcesWaitingTime:TaskScheduler等待足够资源注册的最大时长,超过该时长仍未获取到符合要求的资源时,作业会被终止。默认值为300秒(5分钟),支持时间单位写法如120min、2h。spark.scheduler.minRegisteredResourcesRatio:作业启动所需的最小资源占比(相对于你提交作业时申请的总资源量),比如设置为0.1代表只要申请的资源有10%可用就可以启动作业,不需要等全部资源到位,可配合超时参数一起使用。spark.deploy.app.timeout:Standalone Master端限制的应用最大存活时长,若集群管理员配置了该参数,超过时长的应用无论是否在运行都会被杀死,需要同步调整该值。
修改方式
方式1:单次作业动态生效(无需重启集群)
直接在spark-submit提交命令中添加对应--conf参数即可,示例如下(设置最长等待时间为2小时):
spark-submit \ --master spark://<你的Master节点IP>:7077 \ --deploy-mode cluster \ --conf spark.scheduler.maxRegisteredResourcesWaitingTime=2h \ --conf spark.scheduler.minRegisteredResourcesRatio=0.1 \ --conf spark.deploy.app.timeout=3h \ --class <你的作业主类全限定名> \ <你的作业jar包路径>
方式2:集群全局生效(需重启集群)
修改集群所有节点下SPARK_HOME/conf/spark-defaults.conf文件,添加以下配置:
spark.scheduler.maxRegisteredResourcesWaitingTime 2h spark.scheduler.minRegisteredResourcesRatio 0.1 spark.deploy.app.timeout 3h
配置完成后重启Spark Master和所有Worker节点,后续所有提交的作业都会默认使用该配置。
注意事项
- 时间配置支持直接写
h(小时)、min(分钟)、s(秒)等单位,不需要手动换算为毫秒。 - 过长的等待时间会导致作业长时间占用Master的调度队列资源,建议结合集群实际负载设置合理的超时阈值。
内容的提问来源于stack exchange,提问作者lubom
相关产品推荐
相关产品推荐

