弹性 MapReduce Airflow 开发指南

弹性 MapReduce(EMR)支持 EMR on TKE 与 EMR on CVM 两种形态部署 Airflow 集群,推荐优先选择 EMR on TKE:该形态支持 KubernetesExecutor,Scheduler 可为每个任务实例创建独立 Pod,实现任务级资源隔离与按需弹性,且不依赖 Redis 作为任务队列;同时兼容 CeleryExecutor,可按任务隔离与吞吐需求选择执行方式。

相关产品
弹性 MapReduce 产品页,含版本规格、价格与购买入口。

一、前提条件

·已创建 Airflow 集群(EMR on TKE 或 EMR on CVM)。EMR on CVM 集群创建时将自动创建元数据库实例(云数据库 MySQL 与 Redis),请确认账号具备相关资源创建权限,并了解对应计费规则。

·这篇按 EMR on TKE、EMR on CVM 的顺序分别说明,请按实际使用的集群形态查看对应章节。

二、创建 Airflow 集群

EMR on TKE 的 Airflow 集群使用产品发行版 EMR-TKE-AIRFLOW-V1.0.0。

三、使用 KubernetesExecutor

EMR on TKE 的 EMR-TKE-AIRFLOW-V1.0.0 同时支持 CeleryExecutor 与 KubernetesExecutor,本节介绍 KubernetesExecutor:Scheduler 直接调用 Kubernetes API 为每个任务实例(Task Instance)创建独立的 Task Pod,任务按 0..N 弹性创建,与现有 DAG / Task / Connection / Variable / XCom 体系完全兼容;任务状态通过 Kubernetes Watch 机制获取,无需依赖 Redis。

在 DAG 中可通过 executor_config 指定任务 Pod 的资源、镜像与调度策略:

from airflow import DAGfrom airflow.operators.bash import BashOperatorfrom datetime import datetimeexecutor_config = { "KubernetesExecutor": { "request_memory": "2Gi", "limit_memory": "4Gi", "request_cpu": "500m", "limit_cpu": "1", "image": "your-task-image:tag", }}with DAG( dag_id="example_k8s_executor", start_date=datetime(2026, 9, 30), schedule=None,) as dag: task = BashOperator( task_id="run_in_pod", bash_command="echo hello from task pod", executor_config=executor_config, )

注意:说明:

四、使用 CeleryExecutor

EMR on TKE 同样支持 CeleryExecutor:Scheduler 将任务实例下发至 Celery 队列,由 Worker 拉取执行,任务执行状态与队列消息存储在 Redis 中。

注意:说明:

注意:CeleryExecutor 依赖 Redis 作为任务队列中间件;KubernetesExecutor 由 Scheduler 直接调用 Kubernetes API 创建 Pod,无此依赖。具体配置项以控制台为准。

五、访问 WebUI 与运维

EMR on TKE Airflow 集群同样支持通过控制台 集群服务 > Airflow 页面的 WebUI 入口访问 Airflow UI,并支持服务状态查看、角色管理、配置管理等运维操作。

六、创建 Airflow 集群

1. 登录 EMR 购买页,集群类型选择 Airflow。

2. 配置元数据存储。

·普通数据库:自动创建云数据库 MySQL 实例,用于永久存储 Airflow 所有任务历史运行记录;可选开通数据库审计服务(单独计费)。

·高性能数据库:自动创建云数据库 Redis 实例,用于临时存储 Airflow 当前任务队列中的消息和任务的执行状态。

3. 选择高可用模式与部署方式。

·支持跨可用区部署(均衡策略)。

七、访问 Airflow WebUI

集群创建完成后,在 EMR 控制台 对应集群的 集群服务 > Airflow 页面,通过 WebUI 入口访问 Airflow UI(8330 端口),即可查看 DAG 列表、手动触发任务、查看任务实例状态与日志。

八、扩容与缩容

·扩容:支持添加角色实例。

·缩容:支持移除角色实例。

九、监控与运维

·监控:支持服务状态、角色健康状态(Master / Core)、服务监控指标 Dashboard 查看。

·运维操作:支持服务的重启、启动、暂停、维护模式、查看端口、角色管理、配置管理等操作。

·其他能力:支持日志查看、集群脚本、引导操作、导出软件配置。

赞 (0)
上一篇 4天前
下一篇 4天前