如何将 Airflow Scheduler 部署到 AWS EC2?
how do I deploy my Airflow Scheduler to AWS EC2?
我正在尝试使用 Airflow 在 AWS 上构建一个简单的数据管道。
我创建了一个 DAG,每天将数据抓取到 S3,然后使用 EMR 上的 Spark 作业 运行 处理它。
我目前 运行 在本地笔记本电脑上使用 Airflow Scheduler,但我当然知道这不是一个好的长期解决方案。
所以我想知道一些关于将我的调度程序部署到 EC2 的技巧(距离大小、部署过程或任何其他有用的信息)
您需要在 EC2 机器上安装 airflow 来管理您的 EMR 集群的所有这些请求。
跟随气流安装
https://airflow.apache.org/docs/stable/installation.html
您可以在此处查看所有气流执行器 -
https://airflow.apache.org/docs/stable/executor/index.html
我建议你为此安装 celery executor。
在您的 EC2 机器上,您应该至少安装 3 个来自 airflow
的服务
airflow 网络服务器 - 访问 airflow 用户界面
airflow webserver start
airflow scheduler - 触发你的 dags
airflow scheduler start
airflow worker - 运行 你的任务
airflow worker start
还极力推荐您安装数据库(mysql,postgres)来存储气流中的元数据。您可以 运行 EC2 机器外部的这个数据库作为 AWS RDS Postgres,然后您可以使用数据库的连接字符串信息编辑 airflow.cfg 文件。
运行 本地通常不是可行的 post 测试阶段。所以你需要一个 运行ning 服务器。以下是将其部署到 AWS EC2 的选项和指南。
您可以使用 docker/airflow 图像在 EC2 实例上部署气流。 T3.medium 就足够了。通常没有太多的 DAG。我们可以创建一个工作流,每 7 天 运行 并清理日志文件,因此在磁盘方面,如果内存消耗保持不变,则不会有问题。您可以像在本地计算机上一样在 ec2 上正常安装和配置气流,但我更喜欢使用 docker image by puckel here.
进行设置
首先,您可以使用已安装 docker 的 AMI,也可以自行安装。
接下来,从 docker
中拉取镜像
docker pull puckel/docker-airflow
在这里,您可能会遇到 SQLAlchemy 版本冲突问题(如果不忽略此步骤。因此请更改 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
为了进入命令行(用于启动 executor
、scheduler
等),从
抓取容器 name/id
docker ps
并使用这个命令
docker exec -ti <name_of_container> bash
此外,为了使用 docker dags 文件夹挂载 ec2 文件夹,您可以像下面那样挂载它,您的 dags 将与 airflow 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 贡献者
费用:
运行ning Airflow 在 t3.medium 上整个月的每月费用约为 32.37 美元,可以是 calculated here
天文学家每 10 个天文单位的成本约为 100$/month(1 CPU,3.75 GB 内存)(但需要权衡,它由天文学家管理并提供支持等)
我正在尝试使用 Airflow 在 AWS 上构建一个简单的数据管道。 我创建了一个 DAG,每天将数据抓取到 S3,然后使用 EMR 上的 Spark 作业 运行 处理它。
我目前 运行 在本地笔记本电脑上使用 Airflow Scheduler,但我当然知道这不是一个好的长期解决方案。
所以我想知道一些关于将我的调度程序部署到 EC2 的技巧(距离大小、部署过程或任何其他有用的信息)
您需要在 EC2 机器上安装 airflow 来管理您的 EMR 集群的所有这些请求。
跟随气流安装
https://airflow.apache.org/docs/stable/installation.html
您可以在此处查看所有气流执行器 -
https://airflow.apache.org/docs/stable/executor/index.html
我建议你为此安装 celery executor。 在您的 EC2 机器上,您应该至少安装 3 个来自 airflow
的服务airflow 网络服务器 - 访问 airflow 用户界面
airflow webserver start
airflow scheduler - 触发你的 dags
airflow scheduler start
airflow worker - 运行 你的任务
airflow worker start
还极力推荐您安装数据库(mysql,postgres)来存储气流中的元数据。您可以 运行 EC2 机器外部的这个数据库作为 AWS RDS Postgres,然后您可以使用数据库的连接字符串信息编辑 airflow.cfg 文件。
运行 本地通常不是可行的 post 测试阶段。所以你需要一个 运行ning 服务器。以下是将其部署到 AWS EC2 的选项和指南。
您可以使用 docker/airflow 图像在 EC2 实例上部署气流。 T3.medium 就足够了。通常没有太多的 DAG。我们可以创建一个工作流,每 7 天 运行 并清理日志文件,因此在磁盘方面,如果内存消耗保持不变,则不会有问题。您可以像在本地计算机上一样在 ec2 上正常安装和配置气流,但我更喜欢使用 docker image by puckel here.
进行设置首先,您可以使用已安装 docker 的 AMI,也可以自行安装。
接下来,从 docker
中拉取镜像docker pull puckel/docker-airflow
在这里,您可能会遇到 SQLAlchemy 版本冲突问题(如果不忽略此步骤。因此请更改 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
为了进入命令行(用于启动 executor
、scheduler
等),从
docker ps
并使用这个命令
docker exec -ti <name_of_container> bash
此外,为了使用 docker dags 文件夹挂载 ec2 文件夹,您可以像下面那样挂载它,您的 dags 将与 airflow 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 贡献者
费用:
运行ning Airflow 在 t3.medium 上整个月的每月费用约为 32.37 美元,可以是 calculated here
天文学家每 10 个天文单位的成本约为 100$/month(1 CPU,3.75 GB 内存)(但需要权衡,它由天文学家管理并提供支持等)