2011-11-07 61 views
5

(甚至比Difference between Pig and Hive? Why have both?更基本的)使用Pig/Hive進行數據處理而不是直接java map縮減代碼?

我已經寫在數據處理流水線數的Java的map-reduce任務在Hadoop的(我自己的自定義代碼,從Hadoop的映射和減速派生)。這是一系列基本操作,例如連接,反轉,排序和分組。我的代碼涉及到,而不是非常通用的。

繼續這種公認的開發密集型方法與使用多個UDF將所有內容遷移到Pig/Hive的優缺點是什麼?哪些工作將無法執行?我會受到性能下降的影響嗎(與100個TB一起工作)?我會在維護時失去調整和調試代碼的能力嗎?我將能夠將部分作業作爲Java map-reduce進行管理,並將其輸入輸出與我的Pig/Hive作業一起使用?

回答

8

參考Twitter:通常Pig腳本是大約5%的時間寫入的原生映射/縮減代碼的5%。但是,查詢通常需要110-150%的時間來執行本地地圖/縮減作業。但是,當然,如果有一個對性能高度敏感的例程,他們仍然可以直接手動編寫本地map/reduce函數。

以上參考文獻還討論了Pig在開發MapReduce應用程序時的優缺點。

與任何更高級別的語言或抽象一樣,Pig/Hive在犧牲開發人員生產力的情況下失去了靈活性和性能。

+8

(我在Twitter上致力於Pig):110-150%的數字有點武斷。通常情況下,Pig會比你的代碼快得多,因爲它做了很多優化。從根本上講,它將事情轉化爲MR,所以它不會比MR更快。但簡單的初學者到中級MR代碼會經常失敗。 – SquareCog

+0

Thnx的洞察力。 –

3

在此paper截至2009年,它表明,豬運行比普通MapReduce慢1.5倍。預計在Hadoop之上構建的更高級別的工具比普通的MapReduce執行速度要慢,但是爲了使MapReduce能夠最優地執行,需要編寫大量樣板代碼的高級用戶(例如二進制比較器)。

我發現它與提及一個名爲Pangool(我是開發者)的新API有關,它旨在通過使許多事情更易於編碼和理解來取代普通的Hadoop MapReduce API(二級排序,reduce-邊連接)。 Pangool不會強加性能開銷(截至first benchmark只有5%),並保留原始MapRed API的所有靈活性。

相關問題