云 Composer/Airflow 任务运行程序存储

Cloud Composer/Airflow Task Runner Storage

我习惯 运行 通过 AWS 数据管道进行管道传输,但正在熟悉 Airflow (Cloud Composer)。

在数据管道中我们会:

我刚刚意识到我的气流运行器不是短暂的。我在 /tmp 中触摸了一个文件,在单独的 DagRun 中再次触摸了它,然后列出 /tmp 并找到了两个文件。我只期待我最近接触的那个。

这似乎意味着我需要注意有多少 "stuff" 被本地存储在运行器上。

我知道 GCS 使用 FUSE 安装 /data 文件夹,所以我默认将我的大量工作文件存储在那里,并将文件从那里移动到其他地方的最终存储桶,但是你如何处理这个? "best practice" 是什么?

感谢您的建议。

Cloud Composer 目前使用 CeleryExecutor,它配置处理任务实例执行的持久工作进程。正如您所发现的,您可以更改 Airflow worker(即 Kubernetes pods)的文件系统,它们确实会持续存在,直到 pod 为 restarted/replaced.

最佳实践明智的做法是,您应该将本地文件系统视为任务实例生命周期内的临时文件系统,但您不应期望它会为您清理。如果您有执行繁重 I/O 的任务,您应该在 /home/airflow/gcs 外部 执行它们,因为该路径是网络挂载的 (GCSFUSE),但如果有最终数据你要坚持,那就写到/data.