为 DAG 序列化配置环境

在正常的 Cloud Composer 环境中,Airflow 调度器和网络服务器会连续处理有向无环图 (DAG)。您可以启用 DAG 序列化来强制调度器在发送到网络服务器之前处理 DAG 文件,从而提高 Airflow 网络服务器的可靠性和性能。

工作原理

如果没有 DAG 序列化,调度器和网络服务器会同时处理 DAG,并且网络服务器会在启动后立即加载整个 DAG 包。启用 DAG 序列化会强制调度器在网络服务器启动之前解析所有 DAG 文件,并将结果存储在序列化 DAG 表中。然后,网络服务器会按需从表中加载每个 DAG 进行处理。以这种方式序列化 DAG 可以减少网络服务器的 CPU 和内存用量,尤其是在处理大量 DAG 时。

前提条件和限制

  • 您只能在使用 Composer 版本 1.8.2 或更高版本以及 Airflow 版本 1.10.3 或更高版本的 Cloud Composer 环境中启用 DAG 序列化。如需查看所有可用版本,请参阅 Cloud Composer 版本列表

  • 不能同时启用 DAG 序列化和异步 DAG 加载

  • 启用 DAG 序列化会停用 Cloud Composer 的所有 Airflow 网络服务器插件。这不会影响调度器或工作器插件,包括 Airflow 操作器、传感器等。

启用 DAG 序列化

要启用 DAG 序列化,您必须指定以下配置参数:

core store_serialized_dags True
core store_dag_code True
core min_serialized_dag_update_interval 30
scheduler dag_dir_list_interval 30

[core] min_serialized_dag_update_interval 控制序列化 DAG 在数据库中的更新频率,而 [scheduler] dag_dir_list_interval 控制从数据库中删除已移除 DAG 的频率。我们建议您将这些值设置为 30 秒,因为高更新频率会对性能产生负面影响。

替换 Airflow 配置

您可以通过以下两种方式替换 Airflow 配置:

停用 DAG 序列化

要停用 DAG 序列化,请使用 Airflow 配置替换[core] store_serialized_dags[core] store_dag_code 设置为 False

参考

如需详细了解 DAG 序列化,请阅读 Airflow 文档中的相关文章。