You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks Spark作业长期运行且Executor因HTTP请求销毁问题排查

排查Spark作业Executor被销毁+shuffle文件丢失的根本原因

核心逻辑链:FUSE错误与Worker下线的关联

FuseLogAggregator无法识别uc-volumes存储方案是触发后续问题的核心诱因,完整逻辑链如下:

Executor端FUSE组件遇到无法解析的uc-volumes存储协议 → 触发未处理的IO错误 → Worker节点被标记为异常状态 → 集群通过HTTP端点发送kill请求销毁Worker → Worker本地存储的shuffle文件随节点销毁丢失 → 作业出现Executor逐个下线的现象

根本原因排查方向

1. 作业或元数据中意外引入UC Volumes路径

当前环境依赖Thrift+Hive元数据访问ADLS挂载数据,且未启用Unity Catalog(UC),但存在以下情况:

  • Hive元数据中,作业访问的表location字段包含uc-volumes://开头的路径(比如测试环境遗留配置);
  • 作业代码/配置中硬编码或动态生成了UC Volumes路径,误引入了非当前环境支持的存储协议。

2. Executor端FUSE组件未适配UC Volumes

Spark 12.2.x(如Databricks Runtime 12.2)中,UC Volumes的FUSE支持需要特定配置:

  • 若集群未启用UC,Executor节点的FUSE组件未加载uc-volumes协议的解析器,遇到该协议的IO请求时直接报错;
  • 存在错误配置的参数(如spark.hadoop.fs.AbstractFileSystem.uc-volumes.impl被误设置),导致FUSE组件尝试加载不存在的实现类,触发异常。

3. 触发销毁的命令关联UC Volumes操作

Driver日志显示某命令执行后Executor开始销毁,需聚焦该命令的具体行为:

  • 命令涉及动态资源调整(如手动decommission、自动扩缩容)时,需确认是否错误触发了Worker下线,但结合FUSE错误,更可能是命令触发了UC Volumes相关的IO操作;
  • 命令修改了Spark存储配置(如spark.sql.catalog相关参数),导致Executor端存储协议解析逻辑混乱,触发异常。

验证与修复步骤

  • 定位关键命令:提取Driver日志中触发销毁的命令内容,分析是否涉及UC Volumes路径或配置修改;
  • 扫描元数据路径:通过Hive CLI或元数据查询工具,检查所有作业访问表的location字段,清理uc-volumes://开头的无效路径;
  • 验证FUSE配置:查看Executor节点的Spark配置,确认未加载UC Volumes相关的FUSE解析器,若有错误配置则移除;
  • 最小化测试:构造仅读取ADLS挂载数据的最小作业,观察是否还会出现Worker被销毁的情况,逐步添加原有逻辑定位问题点。

内容的提问来源于stack exchange,提问作者Sridevi R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:52:20