无法升级到Composer 2/Airflow 2,如何本地调试Composer 1 DAG?
本地调试旧版Composer 1 DAG的可行方案
以下是几种无需依赖官方composer-dev命令的本地调试方法:
1. 手动构建匹配版本的Docker镜像
Composer 1的镜像本质是Apache Airflow特定版本 + GCP专属依赖/配置,可以自行复刻:
- 先拉取对应Airflow版本的基础镜像(需匹配Composer 1版本对应的Airflow和Python版本,比如Composer 1.20.12对应Airflow 1.10.15 + Python 3.7):
docker pull apache/airflow:1.10.15-python3.7 - 创建
Dockerfile,添加Composer 1所需的GCP依赖与配置,示例:FROM apache/airflow:1.10.15-python3.7 # 安装Composer 1对应的GCP依赖版本(可参考官方Composer版本依赖清单) RUN pip install --no-cache-dir \ google-cloud-composer==1.7.0 \ google-cloud-storage==1.44.0 \ google-cloud-bigquery==2.28.0 \ apache-airflow[gcp]==1.10.15 # 复制本地DAG目录到容器内 COPY ./dags /opt/airflow/dags - 构建并运行镜像:
访问docker build -t my-composer1-local . docker run -d -p 8080:8080 my-composer1-localhttp://localhost:8080即可进入Airflow控制台调试DAG。
2. 用Python虚拟环境复刻Composer 1环境
直接在本地虚拟环境中安装对应版本的Airflow与依赖:
- 创建并激活对应Python版本的虚拟环境(比如Python 3.7):
python3.7 -m venv composer1-env source composer1-env/bin/activate # Windows系统用 composer1-env\Scripts\activate - 安装匹配版本的Airflow与GCP依赖:
pip install apache-airflow[gcp]==1.10.15 # 补充Composer 1专属依赖版本(需与线上集群一致) pip install google-cloud-storage==1.44.0 google-cloud-bigquery==2.28.0 - 初始化Airflow并启动服务:
airflow initdb # Airflow 1.10版本用该命令,2.x用 airflow db init airflow webserver -p 8080 # 新开终端激活虚拟环境后启动调度器 airflow scheduler - 将本地DAG文件放到Airflow默认DAG目录(
~/airflow/dags),或通过AIRFLOW_HOME环境变量指定自定义目录。
3. 从线上Composer 1集群导出配置复刻环境
如果有正在运行的Composer 1集群,可以直接导出其依赖与配置,确保本地环境与线上完全一致:
- 导出集群的Python依赖列表:
gcloud composer environments describe <你的集群名称> --location <集群区域> --format="value(config.softwareConfig.pypiPackages)" - 导出Airflow配置覆盖项:
gcloud composer environments describe <你的集群名称> --location <集群区域> --format="value(config.softwareConfig.airflowConfigOverrides)" - 根据导出的依赖版本,在本地虚拟环境或Docker镜像中安装相同包,并配置对应的Airflow参数。
内容的提问来源于stack exchange,提问作者Marco Sulla
相关产品推荐
相关产品推荐

