Apache Spark集群运行PySpark时出现TaskSchedulerImpl资源警告如何解决?
WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
触发警告的核心原因
- 集群无正常存活的Worker节点注册到Master,所有Worker处于离线、失联状态
- 现有Worker节点的剩余CPU、内存资源无法匹配当前任务配置的资源申请要求
- 任务配置的单Executor资源规格超出集群单台Worker节点可提供的最大资源上限,导致调度永远无法满足
- 集群所有可用资源已被其他运行中的任务占满,无剩余资源分配给当前任务
- 启用队列调度的场景下,任务所属队列的可用配额已被用尽
- Driver与Master、Worker之间存在网络连通障碍,资源申请请求或资源分配响应无法正常传输
排查与处理方案
1. 检查Worker节点存活状态
- 访问Spark Master Web UI(默认端口8080),查看Workers列表中是否有状态为
ALIVE的节点。无可用Worker时,登录对应节点排查Worker进程状态,重启异常退出的Worker进程 - 查看Worker日志,确认是否存在Master连接失败报错,排查Master、Worker之间的防火墙规则,确保Master通信端口(默认7077)对所有Worker节点开放
2. 核对任务资源配置与集群可用资源
- 先统计集群所有存活Worker的剩余CPU核心总和、剩余内存总和,再对比当前任务的资源配置参数:
- 任务总资源需求(
executor-cores * num-executors核心数、executor-memory * num-executors内存)不能超过集群剩余总资源 - 单Executor的核心数、内存配置不能超过单台Worker节点的最大可用资源上限
- 任务总资源需求(
- 资源不足时可下调任务的资源配置规格,或等待集群其他任务释放资源后重新提交
3. 检查队列资源配额(适配YARN/K8s/FAIR调度场景)
- 若集群使用YARN、K8s作为资源管理器,或Spark启用了公平调度队列:
- 查看任务所属队列的已用资源、剩余配额,确认是否配额已满
- 配额不足时可切换到空闲队列提交任务,或联系集群管理员调整对应队列的配额
4. 验证Driver网络连通性
- 检查运行PySpark程序的Driver节点,是否可以正常访问Master的7077端口、所有Worker的通信端口
- 提交任务时确认
spark.driver.host配置为Worker节点可正常访问的公网/集群内网IP,避免配置为本地回环地址导致Worker无法回连Driver
内容的提问来源于stack exchange,提问作者Peter Wainaina
相关产品推荐
相关产品推荐

