Hadoop Streaming作業和常規java作業有什麼區別。對後者使用Hadoop流是否有優勢。Hadoop Streaming作業vs普通作業?
還有一兩件事,我使用的MapReduce API(即,新API)和我聽說的流只適用於過時mapred API。是嗎 ?
Hadoop Streaming作業和常規java作業有什麼區別。對後者使用Hadoop流是否有優勢。Hadoop Streaming作業vs普通作業?
還有一兩件事,我使用的MapReduce API(即,新API)和我聽說的流只適用於過時mapred API。是嗎 ?
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來執行它們。
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 –
請在發佈快速回復之前嘗試google.com。 –