2010-08-19 101 views
0

我正在開展一個小項目,以熟悉亞馬遜網絡服務。我試圖做一個簡單的Web應用程序;當一個按鈕被按下時,mapreduce作業被啓動並且輸出在瀏覽器上被返回。 什麼是最好的方法來做到這一點?另外,有沒有辦法通過命令行啓動亞馬遜彈性mapreduce作業?遠程啓動Amazon Elastic MapReduce作業?

回答

2

您可以使用您正在編寫Web應用程序的任何語言的AWS SDK來調用EMR來提交作業。我主要使用python工作,所以我最熟悉Python Boto庫,這使得將代碼和數據上傳到s3,配置作業流並啓動作業流程非常輕鬆。

您不會希望啓動作業並在相同的HTTP請求中返回結果,因爲只有在作業能夠運行之前啓動集羣需要幾分鐘的時間。網頁應用程序的頁面不響應分鐘不是一個好的用戶體驗。但是,只提交工作流程似乎只需要幾秒鐘。您需要創建作業流程,並只需跟蹤Web應用程序中的作業流ID。給定一個作業流ID,當用戶回來並且作業完成時,您不應該在檢索日誌數據或從作業流中輸出時遇到太多麻煩。

這裏是一個可以如何與博託推出的彈性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]) 
+0

是的,謝謝邁克。最近我也一直在使用python。 boto和paramiko庫對於創建集羣並將它們運行以運行命令非常有用。 – Kareem 2011-02-24 19:59:25

+0

沒問題,Kareem。 :-)那麼你是Python中的Web應用程序呢? – stderr 2011-02-24 20:02:22

相關問題