Amazon MWAA - Manage Environment ============================================================================== 本文主要讲如何管理 MWAA Environment 本身. 所谓管理 Environment 就等同于管理 Airflow Cluster, 只不过大部分复杂的细节都是 AWS 托管的, 我们只需要关注一些重要的配置即可. 这里我们简单回顾一下 MWAA 的架构. 任何一个 MWAA Environment 都包含以下组件: - scheduler: 用于中心化的调度, 当然 AWS 是做了冗余和高可用的, 可以有不止一个 scheduler, 但是通常 scheduler 的数量不会需要特别多, 它主要利用的是高性能 event loop 异步执行. - web server: 用于提供 Airflow UI, 作为 web server 的机器一般只有一台 (当然是有备用的作为高可用). 因为 web server 是给人类用来查看 DAG 运行状态的, 一般不会有太多的并发请求. - worker: 默认包括 1 个常驻 worker. 当然根据你并发执行 DAG 的多少, 可以自动的 scale 增加和减少 worker. 你可能会注意到这里没有提及 Database, 因为 database 其实是跟开发关系不大的部分, 主要为了持久化 metadata, 而且几乎不存在人工直连 database 的情况. 这部分 AWS 是全权接管的, 开发者无法触及. Configuring the Amazon MWAA environment class ------------------------------------------------------------------------------ Environment class 就是指这个 environment 的总体大小. 简单来说不同的大小对应 DAG 的上限: - mw1.small: 50 - mw1.medium: 250 - mw1.large: 1000 而从 task 并行的数量来看: - mw1.small: 5 个并行 task - mw1.medium: 10 - mw1.large: 20 这里注意的是, Airflow 本身是个调度系统, 它的主要工作不是执行真正的业务逻辑和数据处理. 这些工作都应该放在专用的工作负载上进行, 例如 AWS Lambda, AWS Batch, AWS Glue 等. 而 Airflow 中的 Task 主要是处理输入输出参数, 调用 API, 监控状态. 每个 Task 本身的运行时间应该是比较短的 (1-3 秒) 之间. 所以这个并行数量其实是比较够用的. Configuring Amazon MWAA automatic scaling ------------------------------------------------------------------------------ Using Apache Airflow configuration options on Amazon MWAA ------------------------------------------------------------------------------ Upgrading the Apache Airflow version ------------------------------------------------------------------------------ Using a startup script with Amazon MWAA ------------------------------------------------------------------------------