2011-01-12 30 views
0

我正在與大學項目的Amazons MapReduce Web服務合作。爲了使用MapReduce的數據,我需要將它們從關係數據庫(AWS RDS)轉儲到S3中。在MapReduce完成之後,我需要拆分輸出文件並將其加載到它們自己的S3存儲桶中。如何爲AWS準備和善後數據MapReduce

在亞馬遜網絡服務環境中這樣做的好方法是什麼?

最好的情況:除了用於RDS和MapReduce的實例之外,是否可以在不使用額外的EC2實例的情況下完成此操作?

我使用python作爲MapReduce作業流程的mapper和reducer函數和json說明符。否則,我不是語言或技術的約束。

回答

2

如果您看一下Amazon Elastic MapReduce Developer Guide,您需要在S3中指定輸入數據,輸出數據,映射器腳本和縮減器腳本的位置,以創建MapReduce作業流程。

如果您需要做一些預處理(例如從數據庫轉儲MapReduce輸入文件)或後處理(例如將MapReduce輸出文件拆分到S3中的其他位置),您必須自動執行這些操作任務與MapReduce作業流程分開。

您可以使用boto library來編寫這些預處理和後處理腳本。它們可以在EC2實例或任何其他可以訪問S3存儲桶的計算機上運行。來自EC2的數據傳輸可能會更便宜,速度更快,但如果您沒有EC2實例可用,則可以在自己的計算機上運行腳本......除非要傳輸的數據太多!你甚至可以編排生成輸入,啓動一個新的MapReduce作業流程,等待作業完成並相應地處理輸出的整個過程,以便給出正確的配置,整個事情是減少到推按鈕:)

+0

boto看起來很不錯,但不幸的是,你不能定義一個自定義的主要類的jar步驟,這使得我使用它是非常不切實際的。 – Thomas 2011-01-24 15:46:09