Cloud Composer 1 | Cloud Composer 2
本页面介绍 Cloud Composer 会在 Cloud Storage 中为您的环境存储哪些数据。
当您创建环境时,Cloud Composer 会创建一个 Cloud Storage 存储桶,并将该存储桶关联至您的环境。存储桶的名称取决于环境所在的区域、环境名称和一个随机 ID,例如 us-central1-b1-6efannnn-bucket
。
Cloud Composer 需要工作流 (DAG) 及其依赖项的源代码,并将其存储在 Cloud Storage 的特定文件夹中,并使用 Cloud Storage FUSE 将这些文件夹映射到 Cloud Composer 环境中的 Airflow 组件。
Cloud Storage 存储桶中的文件夹
文件夹 | 存储路径 | 映射目录 | 说明 |
---|---|---|---|
DAG | gs://bucket-name/dags |
/home/airflow/gcs/dags |
存储您的环境的 DAG。只有此文件夹中的 DAG 才会被调度用于您的环境。 |
插件 | gs://bucket-name/plugins |
/home/airflow/gcs/plugins |
存储您的自定义插件,例如自定义内部 Airflow 操作器、钩子、传感器或接口。 |
数据 | gs://bucket-name/data |
/home/airflow/gcs/data |
存储任务生成和使用的数据。此文件夹会装载在所有工作器节点上。 |
Logs | gs://bucket-name/logs |
存储任务的 Airflow 日志。Airflow 网页界面和 Cloud Composer 界面的“日志”标签页中也会提供日志。 |
容量注意事项
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 的文件,但组件的本地磁盘只能容纳 1 GB 的数据。在同步期间,组件的本地存储空间用尽,同步无法完成。
DAG 和插件
为避免工作流失败,请将您的 DAG、插件和 Python 模块存储在 dags/
或 plugins/
文件夹中,即使您的 Python 模块不包含 DAG 或插件也是如此。
例如,您可以使用引用 py_file
数据流流水线的 DataFlowPythonOperator
。该 py_file
不包含 DAG 或插件,但您仍应将其存储在 dags/
或 plugins/
文件夹中。
数据
有时,data/
文件夹中的某些文件会同步到特定 Airflow 组件。例如,当 Cloud Composer 在以下期间首次尝试读取给定文件时:
DAG 解析 在 DAG 解析期间首次读取文件时,Cloud Composer 会将其同步到解析 DAG 的调度器。
DAG 执行 在 DAG 执行期间首次读取文件时,Cloud Composer 会将该文件同步到运行执行的工作器。
Airflow 组件的本地存储空间有限,因此请考虑删除下载文件以释放组件中的磁盘空间。请注意,如果您有将同一文件下载到单个 Airflow 工作器的并发任务,则本地存储空间使用量也可能会暂时增加。
日志
logs/
文件夹使用 Cloud Storage API 从 Airflow 工作器同步到存储桶。
Cloud Storage API 配额按移动的数据量计算,因此系统运行的 Airflow 任务数量会增加 Cloud Storage API 用量:运行的任务越多,日志文件越大。
网络服务器、dags/
、plugins/
和 data/
文件夹
Airflow 2 开箱即使用 DAG 序列化。
plugins/
文件夹会自动同步到 Web 服务器,以便 Airflow 界面可以加载插件。您无法在 Airflow 2 中关闭 DAG 序列化。Airflow 1 支持 DAG 序列化,且 Cloud Composer 中默认启用此功能。
- 启用 DAG 序列化后,
dags/
和plugins/
文件夹中的文件不会同步到 Web 服务器。 - 关闭 DAG 序列化后,
dags/
和plugins/
中的文件会同步到 Web 服务器。
- 启用 DAG 序列化后,
数据同步
如果您修改了 Cloud Storage 存储桶中的 DAG 或插件,则会在集群中所有节点上同步数据。
对于 dags/
和 plugins/
文件夹,Cloud Composer 采用本地复制的方式进行单向同步。单向同步意味着这些文件夹中的本地更改将被覆盖。
对于 data/
和 logs/
文件夹,Cloud Composer 使用 Cloud Storage FUSE 进行双向同步。
Cloud Composer 1 和 Cloud Composer 2 之间的区别
Cloud Composer 1 和 Cloud Composer 2 为执行数据同步的组件分配了不同数量的 CPU 和内存。
如果将 Cloud Composer 1 和 Cloud Composer 2 进行比较,则 Cloud Storage 存储桶和 Airflow 组件之间的 dags/
、plugins/
和 data/
文件夹之间的内容同步速度可能会有所不同,具体取决于您的配置。