1

我正在尝试学习如何在亚马逊的 EMR 上运行 java Map/Reduce (M/R) 作业。我正在关注的文档在这里http://aws.amazon.com/articles/3938。我在 Windows 7 电脑上。

当我尝试运行此命令时,会显示帮助信息。

./elasticmapreduce-client.rb RunJobFlow streaming_jobflow.json 

当然,因为我在 Windows 机器上,所以我实际上输入了这个命令。我不知道为什么,但是对于这个特定的命令,没有 Windows 版本(所有命令成对显示,一个用于 *nix,一个用于 Windows)。

 ruby elastic-mapreduce RunJobFlow my_job.json

我的问题是我们如何使用命令行界面(在 Windows 上)从 Windows 向亚马逊的 EMR 提交/运行作业?我试过在网上搜索,但我被带到了野外。任何帮助表示赞赏。

谢谢。

4

3 回答 3

1

尝试使用 --json 选项。

例如 ./elastic-mapreduce --create --name Multisteps --json wordcount_jobflow.json

您将需要仅使用步骤来修剪您的 json 文件(删除 [] 之外的所有内容)。有一个线程讨论:https ://forums.aws.amazon.com/thread.jspa?threadID=35093

于 2012-06-21T23:21:15.670 回答
1

要在 EMR 上运行流式作业,首先您需要通过以下命令创建集群:

ruby elastic-mapreduce --create --alive --plain-output --master-instance-type m1.xlarge 
--slave-instance-type m1.xlarge --num-instances 6  --name "Some Job Cluster" --bootstrap-action s3://<path-to-a-bootstrap-script> 

这将返回一个jobid,它看起来像:j-ABCD7EF763

现在您可以通过以下命令逐步提交作业:

ruby elastic-mapreduce -j j-ABCD7EF763 --stream --step-name "my step name" --mapper
s3://<some-path>/mapper-script.rb --reducer s3://<some=path>/reducer-script.rb --input 
s3://<input-path> --output s3://<output-path> 

您还可以直接运行作业而不是运行流式作业,在这种情况下,集群将在作业结束时自行终止。

于 2012-06-19T21:18:34.490 回答
1

嗯。我不确定 RunJobFlow 的例子有多老......我个人会忽略它。

你能跑吗?

localhost$ elastic-mapreduce --describe

一旦可以,您应该直接在集群上玩,以摆脱您需要执行的确切步骤......这样做是值得的,因此您不必启动/停止集群无数次。

localhost$ elastic-mapreduce --create --alive --num-instances 1
localhost$ elastic-mapreduce -j j-YOUR_ID_HERE --ssh

cluster$ hadoop jar my.jar -D some=1 -D args=1 blah blah
cluster$ hadoop jar some_other_jar.jar -D foo -D bar
cluster$ ^D

localhost$ elastic-mapreduce -j j-YOUR_ID_HERE --terminate

然后,当您对这些步骤感到满意并且需要让它无头运行(例如,从 cron 运行)时,您可以让 EMR 编排这些步骤(包括集群在最后自行终止)

localhost$ elastic-mapreduce --create --num-instances 1
localhost$ elastic-mapreduce --jar my_jar.jar --args "-D,some=1,-D,args=1,blah,blah"
localhost$ elastic-mapreduce --jar some_other_jar.jar --args "-D,foo,-D,bar"

如果您需要更复杂的步骤,我只会探索 --json 的东西,它有点神秘,第一次很难搞定......

于 2012-03-14T23:43:40.217 回答