当前位置: 首页 > 知识库问答 >
问题:

使用气流dag run创建EMR群集,任务完成后,EMR将终止

艾英范
2023-03-14

我有气流作业,它们在EMR集群上运行良好。我需要的是,假设我有4个气流作业,需要一个EMR集群,比如说20分钟来完成任务。为什么我们不能在DAG运行时创建一个EMR集群,一旦作业完成,它将终止创建的EMR集群。

共有3个答案

范华清
2023-03-14

最好的方法可能是在创建EMR集群的Airflow DAG的根部有一个节点,然后在DAG的最末端有另一个节点,在所有其他节点完成后将集群向下旋转。

强才捷
2023-03-14

检查我的实现,DAG将创建emr集群,并针对s3中的数据运行spark作业,完成后自动终止。

https://beyondexperiment.com/vijayravichandran06/aws-emr-orchestrate-with-airflow/

马国源
2023-03-14

当然,这将是资源的最有效利用。让我警告你:这里面有很多细节;我会尽量列出尽可能多的让你开始。我鼓励您添加自己的全面答案,列出您遇到的任何问题和解决方案(一旦您完成此操作)

关于集群创建/终止

>

不要担心,如果你不使用AWS秘书访问密钥(并完全依赖于IAM角色);实例化任何AWS相关的钩子操作符气流将自动返回到基础EC2的附加IAM角色

如果您没有使用EMR-Steps API进行作业提交,那么您还必须使用Sensors手动检测上述操作。已经有一个用于轮询创建阶段的传感器叫做EmrJobFlowSensor,您可以稍微修改它来创建一个用于终止的传感器

job_flow_extra中传递群集配置JSON。您也可以传递配置在一个连接的(如my_emr_conn额外的参数,但避免这样做,因为它经常打破SQLAlChemyORM加载(因为它是一个大的json

关于工作提交

>

对于特定于应用程序的情况(如HiveLivy),您可以使用它们的特定方式。例如,您可以使用HiveServer2Hook提交Hive作业。这里有一个棘手的部分:run\u job\u flow()调用(在集群创建阶段进行)只会为您提供一个job\u flow\u id(集群id)。必须使用EmrHook调用description\u cluster()来获取主节点的私有IP。使用此选项,您将能够以编程方式创建连接(例如Hive Server 2 Thrift连接),并使用它将计算提交到集群。在完成工作流程之前,不要忘记删除这些连接(为了美观)。

最后是与集群交互的老bash。为此,您还应该在群集创建阶段传递一个EC2密钥对。之后,您可以以编程方式创建一个SSH连接,并使用它(带有SSHHookSSHoperator)在群集上运行作业。在Airflow中阅读更多关于SSH的内容

特别是对于提交Spark作业到远程Emr集群,请阅读此讨论

 类似资料:
  • 我希望创建一个EMR集群,其中出于安全原因,没有为任何实例分配公共IP地址。我已经能够在我的VPC中启动集群,并使用我自己的自定义安全组,但由于某些原因,默认情况下所有节点都分配了一个公共IP地址。 我在EMR CLI文档中找不到有关如何禁用此功能的任何信息:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-

  • 我们有一个Hadoop集群,运行在带有Spark 1.6.1的AWS弹性MapReduce(EMR)中。进入集群主机并提交Spark作业没有问题,但我们希望能够从另一个独立的EC2实例提交它们。 另一个“外部”EC2实例设置了安全组,以允许所有TCP流量进出EMR实例主从实例。它有一个直接从Apache网站下载的Spark的二进制安装。 我不知道是怎么回事。非常感谢您的任何帮助。

  • 我有一个EMR集群,运行一个火花流作业成功了几天。但几天后,群集因步骤失败而终止。我查了日志上面写着 对于此错误,我进行了检查,发现对于JRE内存不足。 我发现集群创建EMR steps日志并存储在路径/mnt/var/logs/hadoop/steps/step_id/上,在创建集群时,我给出了一个logUri路径,日志根据该路径复制到s3位置。所以我的猜测是,由于这些日志,步骤失败正在发生。

  • 我们正在EC2实例上构建一个airflow服务器,该服务器与EMR集群通信以运行spark作业。我们试图提交一个BashOperator DAG,它为一个简单的wordcount应用程序运行spark-submit命令。下面是我们的spark提交命令: 我们得到以下错误:线程“main”org.apache.spark.sparkException中的异常:当使用主“yarn”运行时,必须在环境中

  • 这是我第一次尝试配置纱线调度器,但它不像我希望的那样工作。集群最初作为FIFO工作,我试图让作业并行运行。我已经在yarn-site.xml的顶部添加了 然后添加文件/etc/hadoop/conf.empty/fail-scheduler.xml: 因此,在这之后,我停止并启动了yarn资源管理器,我在yarn应用控制台上看到了Fair Scheduler!但是,当尝试在集群上运行多个作业时,A

  • Ultimate EMR 是一个功能丰富的开源核心电子病历的小型医疗机构制定使用Plone/Python/Zope 。核心环境管理代表的功能:病人的历史,过去访问,接收,健康维护,过敏,实验室,命脉,笔记,和程序。抗体藻