Ale*_*ori 1 amazon-ec2 amazon-web-services amazon-emr apache-spark airflow
我正在尝试使用 Airflow 在 AWS 上构建一个简单的数据管道。我创建了一个 DAG,每天将数据抓取到 S3,然后使用在 EMR 上运行的 Spark 作业对其进行处理。
我目前正在本地的笔记本电脑上运行 Airflow Scheduler,但我当然知道这不是一个好的长期解决方案。
所以我想有一些关于将我的调度程序部署到 EC2 的技巧(实例大小、部署过程或任何其他有用的知识)
在本地运行通常不是一个可行的测试后阶段。所以你需要一个正在运行的服务器。以下是将其部署到 AWS EC2 的选项和指南。
您可以使用 docker/airflow 映像在 EC2 实例上部署气流。T3.medium 就足够了。通常没有太多的 DAG。我们可以创建一个工作流,每 7 天运行一次并清理日志文件,因此在磁盘方面,如果内存消耗保持不变,则不会有问题。您可以像在本地计算机上一样在 ec2 上正常安装和配置气流,但我更喜欢使用 docker image by puckle here 进行设置。
首先,您可以使用安装了 docker 的 AMI 或自己安装。
接下来,从 docker 中拉取镜像
docker pull puckel/docker-airflow
Run Code Online (Sandbox Code Playgroud)
在这里,您可能会遇到 SQLAlchemy 版本 conflit 的问题(如果不忽略此步骤。因此,将此行更改DockerFile为使用另一个版本的气流,更高,例如 1.10.10
ARG AIRFLOW_VERSION=1.10.9 # change this to 1.10.10 ( or hardcode sqlalchmy version)
Run Code Online (Sandbox Code Playgroud)
接下来,您可能需要在 postgres 中添加一个用户。
现在你可以运行它
docker run -d -p 8080:8080 puckel/docker-airflow webserver
Run Code Online (Sandbox Code Playgroud)
为了进入命令行(用于启动executor,scheduler等),抢从容器名称/ ID
docker ps
Run Code Online (Sandbox Code Playgroud)
并使用此命令
docker exec -ti <name_of_container> bash
Run Code Online (Sandbox Code Playgroud)
此外,为了使用 docker dags 文件夹挂载 ec2 文件夹,您可以像下面这样挂载它,您的 dag 将与气流 dags 同步
docker run -d -p 8080:8080 -v /path/to/dags/on/your/ec2/folder/:/usr/local/airflow/dags puckel/docker-airflow webserver
Run Code Online (Sandbox Code Playgroud)
为了从任何其他计算机(您拥有笔记本电脑)在浏览器中访问它
首先,从安全组为您的 IP启用ec2 http端口8080
并从浏览器,您将能够访问它
<ec2-public-ip>:8080
Run Code Online (Sandbox Code Playgroud)
在 AWS 上运行气流的其他第三方托管选项
Astronomer是一家在所有云平台上提供完全托管的 Airflow 的公司,具有监控等高级功能。他们的团队中有一些顶级的 Airflow 贡献
成本:
在 t3.medium 上运行整月 Airflow 的每月费用约为 32.37 美元,可在此处计算
天文学家每 10 个 AU(1 个 CPU,3.75 GB 内存)的成本约为100 美元/月(但需要权衡,由天文学家管理并提供支持等)
| 归档时间: |
|
| 查看次数: |
2604 次 |
| 最近记录: |