【问题标题】:Start Amazon Elastic MapReduce Job remotely?远程启动 Amazon Elastic MapReduce 作业?
【发布时间】:2010-08-19 20:38:48
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用编写 Web 应用程序所用的任何语言的 AWS 开发工具包来调用 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])
    

    【讨论】:

    • 是的,谢谢迈克。我最近也经常使用 python。 boto 和 paramiko 库对于创建集群和 ssh 到其中运行命令非常有用。
    • 没问题,卡里姆。 :-) 那么你是 Python 中的网络应用程序吗?
    【解决方案2】:

    你看过了吗? http://developer.amazonwebservices.com/connect/entry.jspa?externalID=873 来自开发人员,可能会对您有所帮助。

    【讨论】:

    • 是的,我已经看到了。但是如何通过 Web 应用程序远程调用 shell 脚本呢?
    猜你喜欢
    • 2012-12-10
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多