2017-01-12 49 views
0

我在笔记本电脑上构建了一个本地群集(伪模式)。我在哪里运行不同的mapreduce命令,如我可以像在本地群集上一样在EMR上运行作业

hadoop-streaming -D mapred.output.compress=true \ 
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \ 
    -files my_mapper.py,my_reducer.py \ 
    -mapper my_mapper.py \ 
    -reducer my_reducer.py \ 
    -input /aws/input/input_warc.txt \ 
    -output /aws/output 

现在我必须在EMR上运行它。有两个选项可以使用,一个是控制台,另一个是aws cli。我想要像上面那样运行精确的命令。为此,我想如果我使用EMR master,那么我应该可以运行这个命令。这是一种正确的方式,还是有这种进步的缺点?

回答

1

是的,你可以通过SSH连接你的集群并在那里运行你的作业,但是你也可以使用Step API(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-steps.html)在主实例上运行任意命令,当然包括像你的例子那样运行分布式作业。您可以使用AWS CLI(“aws emr add-step ...”)或在使用“aws emr create-cluster ... --steps ...”创建集群的过程中向集群添加步骤,也可以使用AWS SDK(如AWS Java SDK)或使用AWS EMR控制台。

Step API的一些优势包括它捕获每个步骤的输出以便您可以通过AWS CLI,SDK或AWS Console查看它,还可以检查步骤的状态以确定它们何时具有完成。

Step API的一个缺点是当前步骤全部按顺序运行,所以不能有多个步骤并行运行。

相关问题