2014-01-07 65 views
5

我需要在Amazon上運行一個自定義的C++作業Map Reduce,並計劃爲此使用Hadoop streaming。 C++映射器可執行文件依賴於數十個定製庫,其中一些構建時間很長。使用自定義AMI運行Amazon EMR?

我預計EMR支持自定義AMI(已經有一個內置的)。但仔細查看文檔後,似乎只能在預定義的圖像上運行EMR:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-cli-commands.html

我錯過了什麼嗎?如果確實只支持預定義的AMI,那麼運行它的最佳選擇是什麼?顯然,可執行文件在s3上,但是我可以將它捆綁起來,這樣它就完全不依賴共享庫了嗎?

謝謝。

回答

4

由於Hadoop集羣節點上需要許多軟件工具和配置,因此只有Amazon提供的AMI才允許在EMR上執行。 http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-ami.html

您可以使用標準引導技術來安裝任何需要在集羣上運行的其他軟件。 請參閱http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html瞭解更多關於引導操作的信息。

回到您的使用案例: 爲什麼在您的使用案例中引導這麼長時間?因爲有很多包?因爲你是從源頭編譯它們的?

在後一種情況下,構建您的.deb包並從定製存儲庫安裝它們以加快引導過程可能是值得的。

如果僅僅因爲你有很多軟件包需要安裝,恐怕目前還沒有明顯的解決方案。我可以考慮在引導期間創建和附加的EBS快照和卷 - 但這種可行性取決於您的使用情況。

2

自定義AMI確實是一個非常有趣的用例。其中一種選擇是使用Qubole,它爲定製AMI提供內置支持,在這種情況下,您可以安裝所有必要的庫以及Qubole的所有酷功能,如支持自動縮放,現場實例等等!

聲明:我爲Qubole工作。

相關問題