Airflow中/tmp文件夹位置及跨任务可访问性相关问题咨询
Airflow 常见问题解答
1. Airflow 中的 /tmp 文件夹位于什么位置?
默认情况下,Airflow 任务运行时调用的/tmp就是运行该任务的 Worker 节点的操作系统默认临时目录,绝对路径就是/tmp。
如果是容器化部署的 Airflow,这个/tmp默认是容器内部的临时目录,除非你在部署时做了目录挂载,将容器内/tmp映射到了宿主机的其他路径。如果你修改过 Airflow 配置项worker_tmp_dir,实际临时目录会以你配置的路径为准,可到airflow.cfg中查询该配置项的取值确认。
2. 跨机器运行的任务如何通过 /tmp 路径共享内容?
首先要明确一个默认规则:未做特殊配置的前提下,不同 Worker 节点的/tmp是完全隔离的,A 机器上的任务写入/tmp的内容,B 机器上的任务完全无法访问,Airflow 原生没有提供跨节点的/tmp自动同步机制。
如果确实需要通过统一临时路径实现任务间数据共享,常用的落地方案有三个:
- 挂载共享存储:给所有 Worker 节点的相同路径(可以是默认
/tmp,也可以是你自定义的统一目录)挂载同一份分布式共享存储,比如 NFS、NAS、EFS 等,所有节点写入该路径的数据都会统一存储到共享存储中,其他节点可直接读取。 - 小数据用 XCom 传递:如果需要共享的内容体积较小(通常上限为 2GB,根据 XCom 后端存储不同会有差异),可以直接调用 Airflow 内置的 XCom 接口在任务间传递数据,不需要依赖本地磁盘路径。
- 大文件走对象存储中转:生产环境最常用的方案是上游任务先把需要共享的大文件写入 S3、MinIO 等对象存储,把文件的存储地址通过 XCom 传递给下游任务,下游任务再根据地址从对象存储拉取对应数据即可。
内容的提问来源于stack exchange,提问作者VE88
相关产品推荐
相关产品推荐

