气流工作者是否共享相同的文件系统?或者他们是孤立的

Do airflow workers share the same file system ? or are they isolated

我在 airflow 中有一个任务,它将文件从 GitHub 下载到本地文件系统。将其传递给 spark-submit,然后将其删除。我想知道这是否会造成任何问题。

这两个 运行 在两个不同的 dag 运行中同时执行相同任务的工作人员是否可能引用同一个文件?

示例代码 -->

def python_task_callback():
    download_file(file_name='script.py')
    spark_submit(path='/temp/script.py')
    delete_file(path='/temp/script.py')

对于您的用例,如果您在 单个任务 中执行您提到的所有操作(下载、解析、删除),那么无论您使用哪个执行程序,您都不会遇到任何问题运行宁.

如果您在多个任务之间拆分操作,那么您应该使用 S3、Google 存储等共享文件系统。在这种情况下,无论您使用哪个执行程序,它都可以正常工作。 可能的工作流程可以是:

第一个任务:将文件从 github 复制到 S3

第二个任务:提交文件进行处理

第三个任务:从 S3 中删除文件


关于任务是否共享磁盘的一般性问题 - 这取决于您使用的执行程序。

在 Local Executor 中,您只有 1 个工作人员,因此所有任务 运行 在同一台机器上并共享它的磁盘。

在 Celery Executor/Kubernetes 中 Executor/others 任务可能 运行 在不同的 worker 上。

但是如前所述 - 不要假设任务共享磁盘,如果您需要将执行程序从 Local 扩展到 Celery,您不希望发现自己处于需要重构代码的情况。