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

多Databricks Notebook并发运行的资源隔离与冲突问题

并发Databricks Notebook实例的存储挂载冲突问题

核心结论

Databricks的存储挂载是集群级别的共享资源,并非Notebook实例独立隔离的:

  • 如果多个Notebook实例在同一个集群上并发运行,你的代码会导致严重的互相影响:比如实例A刚完成挂载,实例B执行卸载操作会直接移除该挂载点,导致A后续访问/mnt或/out_mnt时失败;甚至两个实例同时执行卸载/挂载操作,会出现挂载失败、资源竞争报错等问题。
  • 如果每个管道实例都使用独立的作业集群(每次运行新建专属集群),那么各实例的挂载资源完全隔离,互相不会产生任何影响——因为每个集群的挂载空间是独立的,作业结束后集群销毁,挂载也随之消失。

针对你的代码的问题分析

你当前的代码逻辑是每次运行先卸载指定挂载点,再重新挂载。这种逻辑在共享集群的并发场景下存在明显的竞态条件:

  1. 多个实例同时遍历挂载列表,可能同时检测到挂载存在并执行卸载
  2. 一个实例正在执行挂载操作时,另一个实例执行卸载,会中断挂载流程导致失败
  3. 即使挂载成功,后续也可能被其他实例的卸载操作清空

优化建议

  • 避免在Notebook中动态挂载/卸载:将挂载操作移到集群的初始化脚本中,或者通过Databricks UI/API配置集群级别的永久挂载,确保集群启动时挂载已完成,运行时不再修改挂载点。
  • 使用独立作业集群:配置ADF管道触发Databricks作业时,选择“新建作业集群”而非共享集群,每个作业实例拥有独立的集群资源,挂载操作完全隔离。
  • 动态生成唯一挂载点:如果必须在共享集群运行,可通过注入作业ID、管道运行ID等唯一标识,将挂载点改为/mnt/{run_id}、/out_mnt/{run_id},避免多个实例复用同一挂载点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:27:42