到目前爲止,我一直在使用Pig或Java進行Map Reduce專門用於針對Hadoop集羣運行作業。我最近試用了通過Hadoop流式處理Python Map Reduce,這也很酷。所有這些對我來說都是有意義的,但是當我想要使用一個執行訴訟時,我有點朦朧。另一個。 Java map reduce,我基本上只在需要速度時才使用,但是我什麼時候會想使用Python流,而不是在PIG/Hive中使用更少,更容易理解的行寫出相同的內容?總之,每個人有什麼優點和缺點?使用各種語言在Hadoop中執行作業的優點和缺點是什麼?
回答
我將分別涉及到Java VS Python的,然後分別涉及MR VS蜂巢/豬 - 因爲我認爲這是兩個不同的問題
Hadoop是圍繞Java構建和很多通過Java API的功能可用,和Hadoop大多可以使用java類進行擴展。
Hadoop能夠使用其他語言創建的MR作業 - 它被稱爲流式傳輸。這個模型只允許我們定義mapper和reducer,並且有一些在java中不存在的限制。在同一時間 - 輸入/輸出格式和其他插件必須寫成java類
所以我將定義如下的決策: a)使用Java,除非你有嚴肅的代碼庫,你需要在你的MR作業。 b)考慮在需要創建一些簡單的臨時作業時使用python。
關於Pig/Hive - 它也是以Java爲中心的更高級別的系統。 Hive可以在沒有任何編程的情況下使用,但可以使用java進行擴展。豬從一開始就需要java。我認爲這個系統在可以被應用的情況下總是比MR工作更可取。通常情況下,這些是處理SQL時的情況。
流與原生Java之間的性能考慮因素。
通過輸入流將輸入流輸入到映射器。它是進程間通信,在Java的情況下,在記錄讀取器和映射器之間進行數據傳遞時,它本質上效率較低。
我可以從上面得出如下結論: a)如果進行一些輕量級處理(如查找子字符串,計數...),此開銷可能非常重要,Java解決方案將更有效。
b)如果某些繁重的處理可以更有效地用某種非Java語言實現 - 基於流的解決方案可能會有一些優勢。
豬/蜂巢性能考慮因素。 Pig/Hive都實現了SQL處理的基元。換句話說 - 他們在RDBMS世界中實施執行計劃的元素。這些實現很好,並且很好調整。在同一時間Hive(我知道更好)是解釋器。它不會執行代碼生成 - 它將預先構建的MR作業中的執行計劃集成在一起。這意味着如果你有複雜的條件並且會爲他們專門編寫代碼 - 它有可能比Hive做得更好 - 代表編譯器vs中間件的性能優勢。
關於Java與豬 - 我會在大多數情況下(與Java UDF一起)使用豬的靈活性,並讓其他人(豬)找出將工作分解爲映射並減少的最佳方法,combiners等
我使用Java時,我絕對要控制作業的每一個方面。
關於使用python(或其他語言),這是我會用的,如果開發人員更適應這些其他語言。請注意,你也可以mix pig and streaming
有斯卡拉,在那裏你可以爲你的工作寫更簡單的代碼。例如,檢查出:https://github.com/NICTA/scoobi
你也許能有一些鼓勵使用C++對於那些更多的內存或CPU密集型任務。你可以讀什麼Hypertable的寫了一篇關於他們的C++決定:http://code.google.com/p/hypertable/wiki/WhyWeChoseCppOverJava
的Java也對系列化側有問題的,因爲它爲它從輸入流中讀取任何對象創建一個對象。你需要小心不要使用Java序列化,只是因爲你有Java實現。
- 1. 各種模板類型的用途,優點和缺點是什麼?
- 2. 優點,缺點和寫作使用的語言.NET
- 3. 各種GWT畫布庫的優缺點是什麼?
- 4. 在無限循環運行中,cron作業的優點/缺點是什麼?
- 5. 優點和缺點解釋語言
- 6. Flex與PHP:各自的優缺點是什麼?我應該使用哪種語言?
- 7. IDE中實時協作的優點和缺點是什麼?
- 8. 使用Signalr的優缺點是什麼
- 9. Icon編程語言的優缺點是什麼?
- 10. 在windows上運行php的優點和缺點是什麼
- 11. 使用「部分索引」的優點和缺點是什麼?
- 12. 使用Protocol vs Inheritance的優點和缺點是什麼?
- 13. 使用OpenID的優點和缺點是什麼?
- 14. 使用Global.asax的優點和缺點是什麼?
- 15. 什麼是使用大型CSS文件的優點和缺點?
- 16. 使用XML模式的優點和缺點是什麼?
- 17. 使用Hadoop NameNode,Checkpoint節點和備份節點的優點和缺點是什麼?
- 18. MySQL中各種日期/時間字段類型的優缺點是什麼?
- 19. 在這種情況下有什麼優點和缺點?
- 20. 使用Maven有什麼優點/缺點?
- 21. 在JavaScript中匿名方法的優點和缺點是什麼?
- 22. 使用Autofac什麼是優點和缺點
- 23. 使用jQuery進行ajax調用的優點和缺點是什麼?
- 24. has_many和has_one,有什麼優點/缺點?
- 25. WPF - MVVM - 各種視圖創建技術的優缺點是什麼?
- 26. iPhone:使用CSS/Javascript進行開發的優點和缺點是什麼?
- 27. GPGPU(通用GPU)開發的優點和缺點是什麼?
- 28. 實施單用戶會話的優點和缺點是什麼?
- 29. jQuery中方法鏈接的缺點和優點是什麼?
- 30. JQuery和Glow JavaScript庫的優點和缺點是什麼?
如果您投票並投票結束,爲什麼不添加評論並提出原因,這樣我就不會做任何你認爲我將來做錯了的事情? – Eli 2012-03-05 18:58:01
http://lucene.472066.n3.nabble.com/Comparison-of-Apache-Pig-Vs-Hadoop-Streaming-M-R-td3792556.html是此討論的相關主題。 – Eli 2012-03-05 20:40:12