2009-12-28 43 views
5

我即將啓動一個將在AWS上運行的mapreduce項目,並提供一個選項,以使用Java或C++。在AWS上使用Hadoop或Hadoop Streaming for MapReduce

我知道用Java編寫項目會使我有更多的功能,但是C++也可以通過Hadoop Streaming來實現。

請注意,我在兩種語言中都沒有背景知識。一個類似的項目已經在C++中完成,代碼對我來說是可用的。

所以我的問題是:這是通過AWS提供的額外功能,還是隻有在您對雲有更多控制時才相關?爲了做出決定,還有什麼我應該記住的,比如可以使用一種語言或其他語言更好地工作的hadoop插件?

在此先感謝

回答

6

您在AWS上運行Hadoop有幾個選項。最簡單的方法是通過Elastic MapReduce服務運行您的MapReduce作業:http://aws.amazon.com/elasticmapreduce。您也可以在EC2上運行Hadoop集羣,如http://archive.cloudera.com/docs/ec2.html所述。

如果您懷疑您需要編寫自己的輸入/輸出格式,分區程序和組合器,我建議在後一個系統中使用Java。如果您的工作相對簡單,並且您不打算將Hadoop集羣用於任何其他目的,那麼我建議您選擇最適合您的語言並使用EMR。

無論哪種方式,祝你好運!

披露:我是Cloudera的創始人。

問候, 傑夫

+0

感謝您的回答,我已閱讀了一些cloudera的演示文稿,他們真的很有幫助 – aeolist 2010-01-06 18:23:37

0

這取決於您的需求。 你的輸入/輸出是什麼?它是一個簡單的文本文件?記錄新的行分隔符? 你需要一個特殊的組合器?分區?

我的意思是說,如果你只需要hadoop的基礎知識,比流將罰款。 但是如果你需要更復雜一些(從hadoop框架,而不是從你自己的業務邏輯),hadoop jar將會更加靈活。

sagie

+0

以及我的輸入將是一個大的文本序列,我假設在1-100 GB區域。我需要將這些序列分成幾部分。無法告訴你是否需要某種特殊的組合器或分區器,因爲我還沒有單獨編程hadoop - 仍然處於「閱讀教程」階段。 所有這些增加的靈活性都可以通過AWS獲得,或者他們爲了安全等原因已經關閉了? – aeolist 2009-12-31 14:42:05

+0

我只是在使用AWS的開始。 據我所知,如果您使用M/R處理具有衆所周知的記錄格式的文本文件,那麼使用Hadoop Jar或Streaming並不重要。選擇一個你更熟悉的(Java與C++)。 如果您需要創建自己的自定義輸入/輸出格式,如果您需要開始使用HBase等。請去java。在流媒體中你不會有這種靈活性。順便說一下,hadoop管道怎麼樣? – sagie 2010-01-04 14:23:40

1

我決定了Java的靈活性比對付由C調整我當前的代碼++到Java的可能的缺點更重要。

感謝您的答案。