Airflow GCP 示例项目教程
项目介绍
airflow-gcp-examples
是一个包含 Google Cloud Platform (GCP) 的 Airflow 操作符和钩子的示例和烟雾测试的仓库。该项目旨在帮助用户快速上手使用 Airflow 与 GCP 进行集成,提供了多种实用的 DAG 示例和配置指南。
项目快速启动
环境准备
-
安装 Airflow:
pip install apache-airflow
-
创建服务账号:
- 在 Google Cloud Console 中创建一个服务账号,并生成一个 JSON 私钥文件。
-
设置 Airflow 连接:
- 在 Airflow 中定义一个名为
gcp_smoke
的连接,提供私钥文件路径和项目 ID。
- 在 Airflow 中定义一个名为
配置示例
-
下载项目:
git clone https://github.com/alexvanboxel/airflow-gcp-examples.git cd airflow-gcp-examples
-
复制 DAG 文件:
- 将
dags
文件夹中的 DAG 文件复制到你的 Airflow 的dags
文件夹中。
- 将
-
设置变量:
- 在 Airflow 中设置以下变量:
{ "gc_project": "my-project", "gcq_dataset": "airflow", "gcq_tempset": "airflow_temp", "gcs_bucket": "airflow-gcp-smoke", "gcs_root": "data" }
- 在 Airflow 中设置以下变量:
启动 Airflow
airflow webserver -p 8080
airflow scheduler
应用案例和最佳实践
案例一:运行 Hadoop 单词计数作业
使用 Cloud Dataproc 集群运行 Hadoop 单词计数作业:
from airflow import DAG
from airflow.providers.google.cloud.operators.dataproc import DataprocCreateClusterOperator, DataprocSubmitJobOperator, DataprocDeleteClusterOperator
from airflow.utils.dates import days_ago
default_args = {
'start_date': days_ago(1)
}
dag = DAG(
'dataproc_wordcount',
default_args=default_args,
description='A simple DAG to run Hadoop wordcount on Dataproc',
schedule_interval=None,
)
create_cluster = DataprocCreateClusterOperator(
task_id='create_cluster',
project_id='your-project-id',
cluster_name='example-cluster',
num_workers=2,
region='us-central1',
dag=dag,
)
submit_job = DataprocSubmitJobOperator(
task_id='submit_job',
job={
'reference': {'project_id': 'your-project-id'},
'placement': {'cluster_name': 'example-cluster'},
'hadoop_job': {
'main_jar_file_uri': 'file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar',
'args': ['wordcount', 'gs://your-bucket/input.txt', 'gs://your-bucket/output']
}
},
region='us-central1',
dag=dag,
)
delete_cluster = DataprocDeleteClusterOperator(
task_id='delete_cluster',
project_id='your-project-id',
cluster_name='example-cluster',
region='us-central1',
trigger_rule='all_done',
dag=dag,
)
create_cluster >> submit_job >> delete_cluster
最佳实践
- 使用服务账号: 确保使用服务账号进行认证,避免使用个人账号。
- 配置最小权限: 为服务账号配置最小权限,遵循最小权限原则。
- 监控和日志: 定期检查 Airflow 日志和 GCP 的监控仪表板,确保作业正常运行。
典型生态项目
Cloud Composer
Cloud Composer 是 Google Cloud 提供的完全托管的 Airflow 服务,可以轻松创建、调度、监控工作流。