如何使用ElasticMapReduceAPI一步向hadoop提交多个作业?

tf7tbtn2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(331)

amazonemr向集群添加步骤的文档说,单个弹性mapreduce步骤可以向hadoop提交多个作业。但是,amazon emr的step配置文档表明,单个步骤只能容纳hadoop-streaming.jar的一次执行(也就是说,hadoopjarstep是一个hadoopjarstepconfig,而不是一个hadoopjarstepconfig数组)。
一步向hadoop提交多个作业的正确语法是什么?

syqv5f0l

syqv5f0l1#

正如amazonemr文档所说,您可以创建一个集群来运行一些脚本 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接口将无法跟踪它们。要做到这一点,您应该使用如下所示的hadoopweb界面,或者简单地说 `ssh` 到主示例并使用 `mapred job` .

相关问题