【问题标题】:How to submit Spark jobs to EMR cluster from Airflow?如何从 Airflow 向 EMR 集群提交 Spark 作业?
【发布时间】:2019-05-30 00:47:46
【问题描述】:

如何在 EMR 主集群(由 Terraform 创建)和 Airflow 之间建立连接。我在具有相同 SG、VPC 和子网的 AWS EC2 服务器下设置了 Airflow。

我需要解决方案,以便 Airflow 可以与 EMR 通信并执行 Spark 提交。

https://aws.amazon.com/blogs/big-data/build-a-concurrent-data-orchestration-pipeline-using-amazon-emr-and-apache-livy/

这些博客对建立连接后的执行有所了解。(没有多大帮助)

在气流中,我使用 AWS 和 EMR 的 UI 建立了连接:-

下面是列出活动和终止的 EMR 集群的代码,我还可以微调以获得活动集群:-

from airflow.contrib.hooks.aws_hook import AwsHook
import boto3
hook = AwsHook(aws_conn_id=‘aws_default’)
    client = hook.get_client_type(‘emr’, ‘eu-central-1’)
    for x in a:
        print(x[‘Status’][‘State’],x[‘Name’])

我的问题是 - 我如何更新我上面的代码可以执行 Spark 提交操作

【问题讨论】:

  • 嗨,kally,请说明您在这里遇到的问题是什么,您已经尝试过什么
  • 嗨,Kally,你能分享一下你创建了哪些资源,哪些连接不工作?
  • @varnit 我已经更新了列出所有 EMR 集群的代码,我如何知道可以提交我的 spark 代码的单个 EMR 集群的主服务器 IP
  • @pradeep 我已经更新了列出所有 EMR 集群的代码,我如何知道单个 EMR 集群的主服务器 IP,我可以在其中提交我的 spark 代码

标签: amazon-web-services terraform airflow amazon-emr


【解决方案1】:

虽然它可能无法直接解决您的特定查询,但总体而言,您可以通过以下方式在(远程EMR 上通过Airflow 触发spark-submit

  1. 使用Apache Livy

    • 这个方案实际上是独立于远程服务器的,即EMR
    • Here's 一个例子
    • 缺点是Livy 处于早期阶段,它的API 出现在我看来incomplete and wonky
  2. 使用EmrStepsAPI

    • 依赖于远程系统:EMR
    • 强大,但由于它本质上是异步,您还需要一个EmrStepSensor(以及EmrAddStepsOperator
    • 在单个EMR 集群上,您不能同时运行多个步骤(尽管存在一些hacky workarounds
  3. 使用SSHHook / SSHOperator

    • 再次独立于远程系统
    • 比较容易上手
    • 如果您的 spark-submit 命令涉及大量参数,那么(以编程方式)构建该命令可能会变得很麻烦

EDIT-1

似乎还有另一种直截了当的方法

  1. 指定远程master-IP


有用的链接

【讨论】:

  • 感谢您提供的信息。我有由 AWS ASG 创建的 EMR 集群,我需要一个突破,我可以从 AWS 中提取单个 EMR Master 运行集群(目前我们在单个环境中运行 4 个集群)。我的意思是,如何指定我需要在哪个 EMR 集群中进行 Spark-submit
  • @Kally 如果您采用 EmrStep 路由,则需要 cluster-id 又名 JobFlowId 来指定要提交的集群到。否则,您将不得不获得该集群的master私有IP(我认为您可以轻松地做到via boto3)。虽然我是 AWS 基础架构的新手,但我相信 IAM Roles 会派上用场进行授权(我假设您已经知道)
  • 查看this 以获取有关如何修改Airflow 的内置operators 以覆盖SSH 的提示
【解决方案2】:

由于您已使用 Terraform 创建 EMR,因此您获得的主 IP 为 aws_emr_cluster.my-emr.master_public_dns

希望这会有所帮助。

【讨论】:

  • 谢谢。如何向这个主 IP 服务器进行身份验证并执行 spark-submit – Kally 18 小时前
猜你喜欢
  • 2018-11-13
  • 1970-01-01
  • 2020-10-07
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多