amazon-web-services - AWS EMR 集群的最佳 Airflow 架构是什么?
问题描述
我有一个带有 1 个主节点、30 个核心节点和一些自动扩展任务节点的 AWS EMR 集群。现在,Oozie 在集群上运行了数百个 Hive 和 mysql 作业。我打算把一些工作从 Oozie 换成 Airflow。我用谷歌搜索将 Airflow 应用到我的集群。我发现所有 dag 都应该位于每个节点上,并且 Airflow Worker 必须安装在所有节点上。但是,我的 dag 会经常更新,会频繁添加新的 dag,但节点数在 100 个左右,甚至使用自动缩放的节点。而且,如您所知,集群上只有主节点具有 hive/mysql 应用程序。所以我很困惑。谁能告诉我适用于我的 EMR 集群的 Airflow 架构?
解决方案
Airflow 工作节点与 EMR 节点不同。
在典型的设置中,celery worker(“Airflow worker node”)从作业队列中读取并使用适当的操作符(在这种情况下可能是 SparkSubmitOperator 或可能是 SSHOperator)执行它们。
Celery worker 不会在您的 EMR 节点上运行,因为它们专门用于运行 Hadoop 作业。
Celery worker 可能会在 EMR 集群之外的 EC2 上运行。
在每个 celery worker 上拥有相同 DAG 的一种常见解决方案是将 dag 放在网络存储(如 EFS)上,并将网络驱动器安装到 celery worker EC2 上。
推荐阅读
- java - 如何在 Windows 上的 java 中使用 vt100 转义码
- julia - 从 Julia 调用 Autohotkey 脚本
- javascript - 将树数据转换为具有层次结构路径的平面数据作为数组
- c - 程序在 C 中无限运行,在编译或运行时没有错误
- mysql - 连接到 Amazon RDS 实例的握手不活动超时
- apache-spark - 仅读取 spark 数据集的前 n 列
- javascript - 如果状态是某些东西,请执行 .filter & .map 否则只有 .map
- ag-grid - 如何始终在 ag-grid 中显示水平滚动条?
- javascript - 从 JavaScript Promise 返回父函数
- javascript - 无法读取未定义的属性“应用”