2013-10-30 102 views
2

Hadoop Streaming作業和常規java作業有什麼區別。對後者使用Hadoop流是否有優勢。Hadoop Streaming作業vs普通作業?

還有一兩件事,我使用的MapReduce API(即,新API)和我聽說的流只適用於過時mapred API。是嗎 ?

+0

http://stackoverflow.com/questions/1217850/streaming-data-and-hadoop-not-hadoop-streaming?rq=1 和http://stackoverflow.com/questions/7598422/is-it-更好的使用mapred-the-mapreduce-package-to-create-a-hadoop-job?rq = 1 –

+1

請在發佈快速回復之前嘗試google.com。 –

回答

4

Hadoop流式傳輸對於那些開發人員沒有太多Java技術知識並且可以更快地編寫Mapper/Reducer的腳本語言來說是非常有利的。

與定製jar作業相比,流作業也會有啓動腳本(Python/Ruby/Perl)VM的額外開銷。這導致了大量的進程間通信,導致大多數情況下作業的效率降低。

使用Hadoop流式傳輸會帶來對輸入/輸出格式的限制。有些時候你想創建自定義的輸入/輸出格式,使用自定義的罐子是自然的選擇。同樣使用Java,可以將hadoop的許多功能覆蓋/擴展到自己的需要/選擇。

從一個答案here報價:

的Hadoop做有能力與其他 語言創建MR就業工作 - 它被稱爲流。這個模型只允許我們定義 映射器和減速器,並且在java中沒有一些限制。在 同一時間 - 輸入/輸出格式和其他插件都必須 寫成的Java類,所以我會定義決策作爲 如下:

  • 使用Java,除非你有嚴重的代碼庫,你需要resue在你的MR工作中。
  • 考慮在需要創建一些簡單的臨時作業時使用python。

至於流只適用於mapred API,它沒有任何意義。雖然使用流映射器/縮減器是用其他語言編寫的,所以沒有必要擔心內部使用哪個API hadoop來執行它們。

+0

我在哪裏可以找到更多細節。一些鏈接將有所幫助 –

+1

考慮使用谷歌,這是一個偉大的網站,在這裏你有第一擊如果你輸入hadoop流:http://hadoop.apache.org/docs/r1.1.2/streaming.html – DDW

+0

即使這回答將有助於:http://stackoverflow.com/questions/6873077/streaming-or-custom-jar-in-hadoop/6889756#6889756 – Amar