如何使用Elastic MapReduce API在一个步骤中向Hadoop提交多个作业?

时间:2014-06-14 10:15:41

标签: hadoop amazon-web-services hadoop-streaming emr

Amazon EMR Documentation to add steps to cluster表示单个Elastic MapReduce步骤可以向Hadoop提交多个作业。但是,Amazon EMR Documentation for Step configuration表明只需一次执行hadoop-streaming.jar(即HadoopJarStep是HadoopJarStepConfig而不是HadoopJarStepConfigs数组)。

在一个步骤中向Hadoop提交多个作业的正确语法是什么?

1 个答案:

答案 0 :(得分:4)

Amazon EMR Documentation类似,您可以创建一个群集,在一个步骤中在主实例上运行一些脚本my_script.sh

aws emr create-cluster --name "Test cluster" --ami-version 3.11 --use-default-roles
    --ec2-attributes KeyName=myKey --instance-type m3.xlarge --instance count 3
    --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/script-path/my_script.sh"]

my_script.sh应该是这样的:

#!/usr/bin/env bash

hadoop jar my_first_step.jar [mainClass] args... &
hadoop jar my_second_step.jar [mainClass] args... &
.
.
.
wait

这样,多个作业就会在同一步骤中提交给Hadoop ---但不幸的是,EMR界面将无法跟踪它们。要执行此操作,您应该使用显示为here的Hadoop Web界面,或仅使用ssh到主实例,并使用mapred job进行探索。