2009-07-27 25 views
13

是否可以使用.NET語言爲Amazon Elastic MapReduce(http://aws.amazon.com/elasticmapreduce/)編寫map/reduce作業?特別是我想用C#。是否可以使用.NET爲Amazon Elastic MapReduce編寫map/reduce作業?

初步研究表明沒有。上述URL的營銷文本表明您有「Java,Ruby,Perl,Python,PHP,R或C++」的選擇,而不提及.NET語言。亞馬遜線程(http://developer.amazonwebservices.com/connect/thread.jspa?messageID=136051 - 「支持C#/ F#map/redurs」)明確表示「目前Amazon Elastic MapReduce不支持Mono平臺或諸如C#或F#等語言。」

以上顯示無法完成。不過,我想知道是否有任何解決方法。例如,我可以爲我的帳戶修改Elastic MapReduce機器映像,並在那裏安裝Mono嗎?

一種替代,通過亞馬遜常見問題建議「使用您的罐所需的其他軟件」(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?CHAP_AdvancedTopics.html)和「如何使用其他文件和庫,映射或減速」(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?addl_files.html),是使的第一步Map/Reduce作業是在本地實例上安裝Mono。這聽起來有點低效,但也許它可以工作?

也許更理想的選擇是嘗試放棄Elastic MapReduce的便利,並在EC2上手動設置我自己的Hadoop集羣。然後我假設我可以毫無困難地安裝Mono。

回答

0

您應該可以使用任何.NET語言(包括C#)中的VB.NET library

+1

還有一個C#版本太多的描述(http://developer.amazonwebservices.com/connect/entry.jspa?外部ID = 2307)。但是,這些對我來說都不像他們讓你編寫.NET mappers/redurs;相反,他們的(共同的)目的似乎是提供一個API替代手動使用Amazon的基於Web的Elastic MapReduce控制面板,其主要目的是啓動/停止/配置您的MapReduce作業。我不認爲這會幫助你在VB/C#中實際實現映射器或簡化器,雖然也許我錯過了一些東西。 – Chris 2009-07-27 21:16:43

5

可能會有一種解決方法,使用Hadoop流並使用Ahead Of Time編譯器將C#代碼編譯爲本地代碼(檢查:http://www.mono-project.com/AOT)。我想,這個二進制文件可以像C++程序那樣從S3運行。

Reed Copsey的回答不正確。 VB.NET庫用於創建作業,從&開始停止它們,但不涉及在Hadoop作業中實際運行的代碼。

2

彈性MapReduce現在有一個「引導操作」功能,亞馬遜目前解釋如下: 之前Hadoop的起點

一個引導作用是一種機制,允許您運行彈性MapReduce實例腳本。引導操作腳本存儲在Amazon S3中,並在創建新作業流時傳遞給Amazon Elastic MapReduce。引導操作腳本從 下載Amazon S3並在作業流程執行之前在每個實例上執行。

引導操作腳本可以用作業流程 實例上已安裝的任何語言編寫,包括Ruby,Python,Perl和bash。

(見http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?introduction.html

一個建議使用的,這是對你的集羣機器上安裝軟件。您可以使用它在您的羣集機器上安裝.NET運行時環境(可能是Mono,而不是Microsoft的,因爲我想所有的Elastic MapReduce機器都在運行Linux)。 (不知道無人看管的安裝有多難,任何想法?)完成後,您可以使用Elastic MapReduce似乎支持的Hadoop流式調用.NET映射器/ Reducer。

相關問題