【问题标题】:How do I submit more than one job to Hadoop in a step using the Elastic MapReduce API?如何使用 Elastic MapReduce API 在一个步骤中向 Hadoop 提交多个作业?
【发布时间】:2014-06-14 10:15:40
【问题描述】:

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

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

【问题讨论】:

  • 你能指定你要提交作业的api(语言)吗?我的意思是你想用哪种语言编写代码以在集群上提交EMR作业。
  • 有一个 JSON 对象描述了您的工作流程,无论如何 EMR 都会读取该对象,因此您最初用于描述工作流程的语言并不重要——它被翻译成 JSON,例如,根据某些规范的 AWS CLI。我实际上不认为这个规范明确地允许一步提交多个作业到 Hadoop,但你可以使用 script_runner.jar 来做到这一点:docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/…。对此进行更深入探索的人可以写出答案。我会接受一个好的。
  • 您找到解决方案了吗?我仍在寻找如何使用 AWS SDK 做到这一点。我正在使用 Javascript API。
  • 当我尝试在 EMR 集群中运行多个 hadoop 作业时,它们都一个接一个地运行(我可以使用 yarn application -list 查看进度)。有没有办法并行运行所有这些 hadoop 作业?一次性将多个 hadoop 作业传递给他们会解决这个问题吗?如何在一个步骤中传递多个作业?
  • @Karshit 让我知道我刚刚写的答案是否适合您....

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


【解决方案1】:

就像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 进行探索。

【讨论】:

  • 这就像登录到集群并运行两个 hadoop 作业(不是作为步骤,而是使用命令“hadoop jar ...”)这里同样,在 EMR 集群中发生的事情是,其中 1 个两个工作正在进行,另一个继续等待进度为 0%。
  • @Karshit 使用 Fair Scheduler 进行实验,它适用于在正在运行的作业之间均匀分配资源:hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/…。这需要您编辑 yarn-site.xml,docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/… 的文档会告诉您如何操作。
  • 我会试试这个并告诉你。
  • 是的,调度程序可以正常工作。两个工作一起显示出进步。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
相关资源
最近更新 更多