如何从气流提交星火作业EMR集群?如何从气流提交星火作业EMR集群?(How to submit S

2019-05-11 20:01发布

我怎样才能建立EMR主群集(由Terraform创建)和气流之间的连接。 我有根据与同一SG,VPC和子网AWS EC2服务器气流设置。

我需要的解决方案,使气流可以跟EMR和执行星火提交。

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’])

我的问题是 - 如何更新我上面的代码可以做火花提交行动

Answer 1:

虽然它可能不会直接解决您的特定查询,广义地说,这里有一些方法可以引发spark-submit上( 远程EMR通过Airflow

  1. 使用Apache Livy

    • 这种解决方案实际上是独立的远程服务器,即, EMR
    • 下面是一个例子
    • 缺点是, Livy是在早期阶段,它的API似乎不完整的靠不住的
  2. 使用EmrSteps API

    • 依赖远程系统上: EMR
    • 坚固耐用,但因为它本质上是异步 ,你还需要一个EmrStepSensor (旁边EmrAddStepsOperator
    • 在单EMR集群,你不能同时运行一个以上的步骤(虽然有些哈克解决方法存在)
  3. 使用SSHHook / SSHOperator

    • 再次独立远程系统的
    • 比较容易上手
    • 如果你的spark-submit命令涉及到很多参数,构建命令(在程序上)可能变得非常麻烦

编辑-1

似乎有另一种简单的方法

  1. 指定远程master -IP

    • 独立的远程系统
    • 需要修改全局配置/环境变量
    • @ cricket_007的答案的详细信息

相关链接

  • 这是一个从@Kaxil奈克自己: 有没有一种方法来在不同的服务器上运行的主提交火花工作
  • 利用气流通过李维提交一批POST方法和跟踪工作星火作业提交
  • 远程火花提交纱线行走在EMR


Answer 2:

正如你所使用Terraform创建EMR,那么你得到的主IP作为aws_emr_cluster.my-emr.master_public_dns

希望这可以帮助。



文章来源: How to submit Spark jobs to EMR cluster from Airflow?