如何将 Airflow Scheduler 部署到 AWS EC2? [关闭]

Posted

技术标签:

【中文标题】如何将 Airflow Scheduler 部署到 AWS EC2? [关闭]【英文标题】:how do I deploy my Airflow Scheduler to AWS EC2? [closed] 【发布时间】:2020-08-30 14:06:16 【问题描述】:

我正在尝试使用 Airflow 在 AWS 上构建一个简单的数据管道。 我创建了一个 DAG,它每天将数据抓取到 S3,然后使用在 EMR 上运行的 Spark 作业对其进行处理。

我目前在本地笔记本电脑上运行 Airflow Scheduler,但我当然知道这不是一个好的长期解决方案。

所以我想知道一些关于将我的调度程序部署到 EC2 的技巧(距离大小、部署过程或其他任何有用的信息)

【问题讨论】:

【参考方案1】:

在本地运行通常不是一个可行的测试后阶段。所以你需要一个正在运行的服务器。以下是将其部署到 AWS EC2 的选项和指南。

您可以使用 docker/airflow 映像在 EC2 实例上部署气流。 T3.medium 就足够了。通常没有太多的 DAG。我们可以创建一个每 7 天运行一次并清理日志文件的工作流,因此就磁盘而言,如果内存消耗保持不变,则不会有问题。您可以像在本地计算机上一样在 ec2 上正常安装和配置气流,但我更喜欢使用 puckel here 的 docker 映像进行设置。

首先,您可以使用安装了 docker 的 AMI,也可以自己安装。

接下来,从 docker 拉取镜像

docker pull puckel/docker-airflow

在这里,您可能会遇到 SQLAlchemy 版本 conflit 的问题(如果没有忽略此步骤。所以在 DockerFile 中更改此行以使用另一个版本的气流,例如 1.10.10 更高版本

ARG AIRFLOW_VERSION=1.10.9 # change this to 1.10.10 ( or hardcode sqlalchmy version)

接下来,您可能需要在 postgres 中添加用户。

现在你可以运行它了

docker run -d -p 8080:8080 puckel/docker-airflow webserver

为了进入命令行(用于启动executorscheduler 等),请从中获取容器名称/ID

docker ps

并使用此命令

docker exec -ti <name_of_container> bash

另外,为了用 docker dags 文件夹挂载 ec2 文件夹,你可以像下面这样挂载它,你的 dags 将与气流 dags 同步

docker run -d -p 8080:8080 -v /path/to/dags/on/your/ec2/folder/:/usr/local/airflow/dags  puckel/docker-airflow webserver

为了从任何其他计算机(您自己的笔记本电脑)在浏览器中访问它

首先,为您的 IP 从安全组启用ec2 http 端口8080

在浏览器中,您可以访问它

<ec2-public-ip>:8080

在 AWS 上运行气流的其他第三方托管选项

Astronomer 是一家在所有云平台上提供完全托管 Airflow 的公司,具有监控等高级功能。他们的团队中有一些顶尖的 Airflow 贡献者

费用:

在 t3.medium 上运行 Airflow 整个月的每月费用约为 32.37 美元,可以是calculated here

天文学家每 10 个 AU 的成本约为 100$/month(1 个 CPU,3.75 GB 内存)(但需要权衡取舍,由天文学家管理并提供支持等)

【讨论】:

【参考方案2】:

您需要在 EC2 机器上安装气流来管理 EMR 集群的所有这些请求。

按照气流安装

https://airflow.apache.org/docs/stable/installation.html

您可以在此处查看所有气流执行器 -

https://airflow.apache.org/docs/stable/executor/index.html

我建议你为此安装 celery executor。 在您的 EC2 机器上,您应该从气流中安装至少 3 个服务

airflow webserver - 访问气流用户界面 airflow webserver start

气流调度器 - 触发你的 dags airflow scheduler start

airflow worker - 运行你的任务 airflow worker start

还极力推荐您安装数据库(mysql、postgres)来存储来自气流的元数据。您可以在 EC2 机器外部作为 AWS RDS Postgres 运行此数据库,然后您可以使用数据库的连接字符串信息编辑 airflow.cfg 文件。

【讨论】:

以上是关于如何将 Airflow Scheduler 部署到 AWS EC2? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 到底是做啥的?

Dolphin Scheduler 2.x版本部署篇

遇到的问题---airflow on k8s---运行时scheduler报错ImportError: libpq.so.5: cannot open shared object file: No s

遇到的问题---airflow on k8s---运行时scheduler报错ImportError: libpq.so.5: cannot open shared object file: No s

异常lockfile.AlreadyLocked: ~/airflow/airflow-scheduler.pid is already locked

AirFlow常见问题汇总