Hadoop 如何在amazon上运行mapreduce作业';windows中的弹性mapreduce(emr)群集?

Hadoop 如何在amazon上运行mapreduce作业';windows中的弹性mapreduce(emr)群集?,hadoop,mapreduce,elastic-map-reduce,amazon-emr,Hadoop,Mapreduce,Elastic Map Reduce,Amazon Emr,我正在尝试学习如何在amazon的EMR上运行JavaMap/Reduce(m/R)作业。我下面的文档就在这里。我使用的是Windows7电脑 当我尝试运行此命令时,会显示帮助信息 ./elasticmapreduce-client.rb RunJobFlow streaming_jobflow.json 当然,由于我在windows计算机上,我实际上键入了这个命令。我不知道为什么,但对于这个特定的命令,没有windows版本(所有命令都成对显示,一个用于*nix,一个用于windows)

我正在尝试学习如何在amazon的EMR上运行JavaMap/Reduce(m/R)作业。我下面的文档就在这里。我使用的是Windows7电脑

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

./elasticmapreduce-client.rb RunJobFlow streaming_jobflow.json 
当然,由于我在windows计算机上,我实际上键入了这个命令。我不知道为什么,但对于这个特定的命令,没有windows版本(所有命令都成对显示,一个用于*nix,一个用于windows)

我的问题是如何使用命令行界面(在windows上)从windows向amazon的EMR提交/运行作业?我试着在网上搜索,但我被带到了野外。感谢您的帮助


谢谢。

嗯。我不确定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编排这些步骤(包括最后的集群自终止)


如果您需要更复杂的步骤,我只会探索--json的内容,这有点神秘,而且第一次很难正确操作…

要在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> 
ruby elastic mapreduce--create--alive--plain output--master instance type m1.xlarge
--从属实例类型m1.xlarge--num instances 6--name“Some Job Cluster”--引导操作s3://
这将返回一个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> 
ruby elastic mapreduce-j-ABCD7EF763——流——步骤名称“我的步骤名称”——映射器
s3:///mapper-script.rb——reducer s3:///reducer-script.rb——输入
s3://--输出s3://
您还可以直接运行作业,而不是运行流作业,在这种情况下,当作业结束时,集群将自行终止。

尝试使用--json选项

e、 g.
/elasticmapreduce--create--name Multisteps--json wordcount\u jobflow.json

您将只需要使用以下步骤修剪json文件(删除[]之外的所有内容)。有一个帖子在讨论:

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> 
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>