气流工作者是否共享相同的文件系统?或者他们是孤立的
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,您不希望发现自己处于需要重构代码的情况。
我在 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,您不希望发现自己处于需要重构代码的情况。