Boto:如何在完成/失败后保持EMR作业流程的运行?

时间:2011-10-31 22:33:16

标签: python boto amazon-emr

如何使用boto向等待的Amazon EMR作业流添加步骤,而不会在完成后终止作业流程?

我在亚马逊的Elastic Map Reduce上创建了一个交互式作业流程并加载了一些表格。当我使用Boto的emr_conn.add_jobflow_steps(...)将新步骤传递给作业流程时,作业流程在完成或失败后终止。

我知道我可以使用带有run_jobflow参数的keep_alive与boto开始工作流程 - 但我想使用已经运行的流程。

3 个答案:

答案 0 :(得分:3)

如果正确完成,则不应以keep_alive=True终止。也就是说,它通常会在失败时退出,因此您希望将terminate_on_failure="CONTINUE"添加到add_job_steps个参数中。

答案 1 :(得分:2)

我使用类似的东西

使用

创建
import boto.emr

conn = boto.emr.connect_to_region('us-west-2')
jobid = conn.run_jobflow(name='cluster-name',
                     ec2_keyname="yourkeyhere",
                     num_instances=3,
                     master_instance_type='m1.medium',
                     slave_instance_type='m1.medium',
                     keep_alive=True,
)

将作业添加到现有群集(等待群集处于等待状态)

import boto.emr

conn = boto.emr.connect_to_region('us-west-2')
# get the list of waiting cluster and take the first one
jobid =  conn.describe_jobflows(states=["WAITING"])[0].jobflowid
print jobid
flow_steps = list()
runThing = boto.emr.step.ScriptRunnerStep(
                        name="job step name",
                        step_args = ["s3://yours3bucket/dosmthg.sh"])
flow_steps.append(runThing)
conn.add_jobflow_steps(jobid, flow_steps)

注释

  • 你需要填写〜/ .aws /凭证(aws configure)
  • 亚马逊地区us-west-2目前拥有最新的ami版本
  • 如果您需要配置蜂巢,猪或自定义安装步骤,您可能需要添加bootstrap_actions

答案 2 :(得分:0)

您也可以使用' KeepJobFlowAliveWhenNoSteps'标志。

u'\u202C'