是否可以使用 .NET 為 Amazon Elastic MapReduce 編寫 map/reduce 作業?
是否可以使用 .NET 語言為 Amazon Elastic MapReduce ( http://aws.amazon.com/elasticmapreduce/ ) 編寫 map/reduce 作業?特別是我想使用 C#。
初步研究表明不是。上述 URL 的行銷文本建議您“選擇 Java、Ruby、Perl、Python、PHP、R 或 C++”,但未提及 .NET 語言。這個亞馬遜執行緒(http://developer.amazonwebservices.com/connect/thread.jspa?messageID=136051 –“支持 C#/F# map/reducers”)明確表示“目前亞馬遜彈性 MapReduce 不支持 Mono 平台或C# 或 F# 等語言。”
以上說明是做不到的。不過,我想知道是否有任何解決方法。例如,我可以為我的帳戶修改 Elastic MapReduce 機器映像,並在其中安裝 Mono 嗎?
亞馬遜常見問題解答“使用您的 Jar 所需的其他軟體”(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?CHAP_AdvancedTopics.html)和“如何使用其他文件和庫”建議的替代方案使用 Mapper 或 Reducer”(http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/index.html?addl_files.html),是使 Map/Reduce 工作的第一步是在本地實例。這聽起來有點低效,但也許它可以工作?
也許更明智的選擇是嘗試放棄 Elastic MapReduce 的便利性,並在 EC2 上手動設置我自己的 Hadoop 集群。然後我假設我可以毫無困難地安裝 Mono。
是的,可以像以前的回答者建議的那樣使用 Bootstrap 操作。
部落格文章 - http://atbrox.com/2011/02/07/an-example-of-using-f-and-c-netmono-with-amazons-elastic-mapreduce-hadoop/ - 描述了擁有一個 C# 映射器和一個帶有單聲道的 F# 減速器
使用 Hadoop 流式傳輸並使用 Ahead Of Time 編譯器將 C# 程式碼編譯為本機程式碼可能會有一種可能的解決方法(檢查:http ://www.mono-project.com/AOT )。我猜這個二進製文件可以像 C++ 程序一樣從 S3 執行。
Reed Copsey 的回答是不正確的。VB.NET 庫用於創建作業、啟動和停止它們,但與實際執行在 Hadoop 作業中的程式碼無關。