远程启动Amazon Elastic MapReduce作业?

时间:2010-08-19 20:38:48

标签: web-applications amazon-ec2 amazon-web-services mapreduce

我正在开展一个小项目,让自己熟悉亚马逊网络服务。我正在尝试制作一个简单的Web应用程序;按下按钮时,将启动mapreduce作业,并在浏览器上返回输出。 最好的方法是什么?另外,有没有办法通过命令行启动亚马逊弹性mapreduce作业?

2 个答案:

答案 0 :(得分:2)

您可以使用您正在编写Web应用程序的任何语言使用AWS SDK来调用EMR来提交作业。我主要使用python,因此我最熟悉Python Boto库,这使得将代码和数据上传到s3,配置作业流并启动该作业流程非常轻松。

您不希望启动作业并在同一HTTP请求中返回结果,因为在作业能够运行之前启动集群只需几分钟。具有不响应分钟的页面的Web应用程序不是良好的用户体验。但是,仅提交作业流程似乎只需要几秒钟。您需要创建作业流程,并且只需跟踪Web应用程序中的作业流ID。给定一个作业流程ID,当用户返回并且作业完成时,您不应该在从作业流程中检索日志数据或输出时遇到太多麻烦。

以下是如何使用Boto启动Elastic MR作业的示例:

import boto
from boto.emr.step import StreamingStep

conn = boto.connect_emr()
step = StreamingStep(name='My wordcount example',
                     mapper='s3n://elasticmapreduce/samples/wordcount/wordSplitter.py',
                     reducer='aggregate',
                     input='s3n://elasticmapreduce/samples/wordcount/input',
                     output='s3n://<my output bucket>/output/wordcount_output')
jobid = conn.run_jobflow(name='My jobflow',
                         log_uri='s3://<my log uri>/jobflow_logs',
                         steps=[step])

答案 1 :(得分:0)

你看过了吗? http://developer.amazonwebservices.com/connect/entry.jspa?externalID=873它来自开发方,可能会帮助你。