存储在 Cloud Storage 中的数据

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

本页面介绍 Cloud Composer 会为您的环境存储哪些数据 Cloud Storage

当您创建环境时,Cloud Composer 会创建一个 Cloud Storage 存储分区,并将该存储分区关联至您的环境。存储桶的名称取决于环境所在的区域、环境名称和一个随机 ID,例如 us-central1-b1-6efabcde-bucket

Cloud Composer 会将环境存储桶中的特定文件夹同步到在环境中运行的 Airflow 组件。例如,当您在 Airflow 组件也会收到更新后的版本。 Cloud Composer 使用 Cloud Storage FUSE 进行同步。

Cloud Storage 存储分区中的文件夹

文件夹 存储路径 映射目录 说明
DAG gs://bucket-name/dags /home/airflow/gcs/dags 存储您的环境的 DAG。
插件 gs://bucket-name/plugins /home/airflow/gcs/plugins 存储您的自定义插件,例如自定义内部 Airflow 操作器、钩子、传感器或接口。
数据 gs://bucket-name/data /home/airflow/gcs/data 存储任务生成和使用的数据。
日志 gs://bucket-name/logs /home/airflow/gcs/logs 存储任务的 Airflow 日志。Airflow 网页界面和 Google Cloud 控制台的日志标签页中也提供日志。

Cloud Composer 会同步 dags/plugins/ 文件夹 单向。单向同步意味着 Airflow 组件中这些文件夹中的本地更改将被覆盖。data/logs/ 文件夹会进行双向同步。

数据同步最终将保持一致。如需从一个运算符向另一个运算符发送消息,请使用 XCom

容量注意事项

dags/plugins/data/ 文件夹中的数据会同步到 Airflow 调度器和工作器。

在 Airflow 2 中,plugins/ 文件夹的内容也会同步到 Airflow Web 服务器。在 Airflow 1 中,只有在 DAG 序列化处于关闭状态时,内容 dags/plugins/ 文件夹才会同步到 Airflow Web 服务器。否则,系统不会执行同步。

放入这些文件夹中的数据越多,占用的空间就越多 Airflow 组件的本地存储空间中在以下服务中保存过多数据: dags/plugins/可能会中断您的运营并导致如下问题:

  • 工作器或调度器耗尽本地存储空间并因以下原因被逐出 组件的本地磁盘上没有足够的空间。

  • dags/plugins/ 文件夹中的文件同步到工作器和调度器需要很长时间。

  • dags/plugins/ 文件夹中的文件同步到工作器和调度器将变得不可能。例如,您在 dags/ 文件夹中存储了一个 2 GB 的文件,但 Airflow 工作器的本地磁盘只能容纳 1 GB 的文件。在同步期间,工作器中的本地资源耗尽 无法完成存储和同步。

DAG 和插件文件夹

为避免 DAG 运行失败,请将您的 DAG、插件和 Python 模块存储在 dags/plugins/ 文件夹中,即使您的 Python 模块不包含 DAG 或插件也是如此。

例如,您使用引用 py_file Dataflow 流水线的 DataFlowPythonOperator。该 py_file 不包含 DAG 或插件,但您仍然必须将其存储在 dags/plugins/ 文件夹中。

数据文件夹

在某些情况下,data/ 文件夹中的某些文件会同步到特定 Airflow 组件。例如,在以下情况下,Cloud Composer 会首次尝试读取给定文件:

  • DAG 解析:在 DAG 解析期间首次读取文件时,Cloud Composer 会将其同步到解析 DAG 的调度器。

  • DAG 执行:在 DAG 执行期间首次读取文件时, Cloud Composer 会将其同步到运行执行的工作器。

Airflow 组件的本地存储空间有限,因此请考虑删除已下载的文件,以释放组件中的磁盘空间。请注意,如果您有并发任务将同一文件下载到单个 Airflow 工作器,本地存储空间用量也可能会暂时增加。

“Logs”文件夹

logs/ 文件夹会从 Airflow 工作器同步到环境的 使用 Cloud Storage API 存储存储桶。

Cloud Storage API 配额按移动的数据量计算, 系统运行的 Airflow 任务数量可能会增加, 您的 Cloud Storage API 用量:运行的任务越多,日志越大 文件。

与 Web 服务器同步

Airflow 2 开箱即用,支持 DAG 序列化。系统会自动将 plugins/ 文件夹同步到 Web 服务器,以便 Airflow 界面加载插件。您无法在 Airflow 2 中关闭 DAG 序列化。

Airflow 1 支持 DAG 序列化,并且 Cloud Composer 中默认开启此功能。

  • 开启 DAG 序列化后,dags/ 中的文件 和 plugins/ 文件夹不会同步到 Web 服务器
  • 关闭 DAG 序列化后,dags/ 中的文件 和 plugins/ 已同步到 Web 服务器

后续步骤