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

当所有步骤完成时,如何从Lambda终止EMR集群?

方轩昂
2023-03-14

我正在尝试找出如何在提交给EMR群集的所有步骤都完成后成功终止它'完成''取消''失败''中断'。有三个λ函数。

  • lambda1:执行一些工作并创建EMR。通过事件传递步骤和群集ID来触发Lambda 2。
  • lambda2:将从lambda1接收的步骤提交到从相同的集群ID。
  • lambda3:提交最后一个步骤,然后在所有步骤都完成时发送终止请求'完成'''取消'''失败'''中断'.
conn = boto3.client("emr")
cluster_id = conn.run_job_flow()
conn = boto3.client("emr")
action = conn.add_job_flow_steps(JobFlowId=cluster_id, Steps=event["steps"])

现在如何只在给定的条件下触发这种终止呢?我看到了具有client.terminate_job_flows()的boto3 API文档,但是这个函数并不等待步骤完成或失败,而是直接命中终止过程。

当我的所有步骤完成后,是否有一种方法可以将KeepJobFlowAliveWhennoStepstrue更改为false?那么我认为它应该自动关闭集群。但是通过API文档,在调用run_job_flow()之后,没有找到任何更改此参数的选项。

希望我能正确地传达我面临的问题。有人帮忙吗?

共有1个答案

孙书
2023-03-14

我同意你的研究。最佳情况是将keepjobflowaliveWhennosteps设置为false以使集群自终止。

我注意到RunJobFlow文档中说:

如果KeepJobFlowAliveWhennoSteps参数设置为true,则群集将转换为waiting状态,而不是在步骤完成后关闭。

关于关闭空闲集群也有类似的讨论:如何在一段时间后自动终止AWS EMR集群

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

  • 在我目前正在开发的Firebase Android应用程序中,我想提供一个导出特性。这个特性应该允许用户导出一组存储在Firebase中的数据。 我的计划是将所有需要的数据收集到一个中间对象(datastructure)中,该对象可以(重新)用于多种导出类型。 谁有应对这一问题的最佳做法?

  • 我正在尝试使用Spring批处理和Spring集成在SFTP服务器中上传多个文件。为此,我使用ThreadPoolTaskExector进行并行处理。 在每个进程中执行文件上传,但是即使所有的文件都在SFTP服务器上成功上传,仍然没有停止进程,程序总是保持运行状态。 即使我重写了JobExefftionListener

  • 只是想知道在我完成输入后如何终止程序?因为在几次“输入”之后扫描仪仍然会继续,假设我要继续输入...我试过了: 和 它们不起作用....程序继续运行,打乱了初衷,

  • 我正在学习以下教程:http://mongodb.github.io/mongo-java-driver/3.2/driver-async/reference/crud/。我只是试图连接到数据库,并读取我创建的一个集合,其中包含两个文档: 但我不断得到以下错误:

  • 问题内容: 我将一堆可运行的对象放入ExecutorService中: 我希望我的程序/过程在所有工作人员完成后立即停止。但是根据我的日志,这种情况还需要20到30秒。工人没有分配任何资源,实际上,他们目前什么都不做。 不要误会我的意思,这对我来说不是一个关键问题,我只是想了解正在发生的事情,而且我想知道这是否是正常行为。 问题答案: 使用它的。的javadocs说“每个新线程都被创建 为非守护

  • 问题内容: 我有一个带有行的表格样式页面。每行都有一个复选框。我可以选中所有/很多复选框,然后单击“提交”,这是对每一行的Jquery ajax调用。 基本上,我为每一行都有一个表单,并且遍历所有选中的行并提交执行jquery ajax调用的表单。 所以我有一个按钮,它可以: 那么每一行都有: 该表格提交给processRow: 我想知道的是,通过这种方法,我可以判断出我所有的Ajax调用是否均已

  • 我目前正在运行一个docker-comment堆栈,用于与量角器测试运行器、一个服务于网页的nodejs服务器和一个服务于java后端的野飞服务器进行基本集成测试。 堆栈是从我的构建服务器(con课程ci)中的dind(docker中的docker)容器运行的。 但是看起来容器并没有在完成量角器测试后终止。 因此,由于wildfly和NodeJ的容器仍在运行,构建任务从未完成。。。 当测试结束时,