Amazon EMR Documentation to add steps to cluster表示单个Elastic MapReduce步骤可以向Hadoop提交多个作业。但是,Amazon EMR Documentation for Step configuration表明只需一次执行hadoop-streaming.jar(即HadoopJarStep是HadoopJarStepConfig而不是HadoopJarStepConfigs数组)。
在一个步骤中向Hadoop提交多个作业的正确语法是什么?
答案 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
进行探索。