gpt4 book ai didi

amazon-web-services - 如何从Airflow提交Spark作业到EMR集群?

转载 作者:行者123 更新时间:2023-12-04 08:19:57 28 4
gpt4 key购买 nike

如何在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/

这些博客对建立连接后的执行情况有所了解。

在 Airflow 中,我已经使用用于AWS和EMR的UI建立了连接:

enter image description here

下面的代码将列出处于 Activity 状态和已终止的EMR群集,我也可以进行微调以获得 Activity 群集:-

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提交操作

最佳答案

虽然它可能无法直接解决您的特定查询,但从广义上讲,这是通过spark-submit在(远程)EMR上触发Airflow的一些方法

  • 使用Apache Livy
  • 此解决方案实际上独立于远程服务器,即EMR
  • Here's
  • 示例
  • 的缺点是Livy处于早期阶段,它的API对我来说是incomplete and wonky
  • 使用EmrSteps API
  • 取决于远程系统:EMR
  • 健壮,但由于它本质上是异​​步,因此您还需要一个EmrStepSensor(与EmrAddStepsOperator一起)
  • 在单个EMR集群上,您不能同时运行多个步骤(尽管存在一些hacky workarounds)
  • 使用SSHHook/SSHOperator
  • 再次独立于远程系统
  • 相对容易上手
  • 如果您的spark-submit命令涉及很多参数,那么(以编程方式)构建该命令可能会变得很麻烦


  • EDIT-1

    似乎还有另一种直接的方法
  • 指定远程master -IP
  • 独立于远程系统
  • Needs修改全局配置/环境变量
  • 有关详细信息,请参见@cricket_007's answer


  • 有用的链接
  • 这是来自@Kaxil Naik本人:Is there a way to submit spark job on different server running master
  • Spark job submission using Airflow by submitting batch POST method on Livy and tracking job
  • Remote spark-submit to YARN running on EMR
  • 关于amazon-web-services - 如何从Airflow提交Spark作业到EMR集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54022129/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com