2012-03-08 129 views
1

我想学习如何在亚马逊的EMR上运行java Map/Reduce(M/R)作业。我正在关注的文档是http://aws.amazon.com/articles/3938。我在一台Windows 7电脑上。如何在windows的amazon弹性mapreduce(emr)集群上运行mapreduce作业?

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

./elasticmapreduce-client.rb RunJobFlow streaming_jobflow.json 

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

ruby elastic-mapreduce RunJobFlow my_job.json 

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

感谢。

回答

1

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

你能跑吗?

localhost$ elastic-mapreduce --describe 

一旦你可以,那么你应该直接打在群集上摇出你需要做的......这是值得这样做的具体步骤,所以你不必启动/停止集群中的bazillion次。

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的东西,如果你需要更复杂的步骤,这是一个有点神秘,很难得到正确的第一次...

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> 

这将返回一个作业ID,它看起来是这样的:

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> 

您也可以直接运行作业:J-ABCD7EF763

现在,你可以通过下面的命令提交你的作业步骤而不是运行流式作业,在这种情况下,集群将在作业结束时自行终止。

相关问题