天天看點

Hadoop生态上幾個技術的關系與差別:hive、pig、hbase 關系與差別

初接觸hadoop技術的朋友肯定會對它體系下寄生的個個開源項目糊塗了,我敢保證hive,pig,hbase這些開源技術會把你搞的有些糊塗,不要緊糊塗的不止你一個,如某個菜鳥的文章的疑問,when to use hbase and when to use hive?….請教了^_^沒關系這裡我幫大家理清每個技術的原理和思路。

pig

一種操作hadoop的輕量級腳本語言,最初又雅虎公司推出,不過現在正在走下坡路了。當初雅虎自己慢慢退出pig的維護之後将它開源貢獻到開源社群由所有愛好者來維護。不過現在還是有些公司在用,不過我認為與其使用pig不如使用hive。:)

pig是一種資料流語言,用來快速輕松的處理巨大的資料。

pig包含兩個部分:pig interface,pig latin。

pig可以非常友善的處理hdfs和hbase的資料,和hive一樣,pig可以非常高效的處理其需要做的,通過直接操作pig查詢可以節省大量的勞動和時間。當你想在你的資料上做一些轉換,并且不想編寫mapreduce jobs就可以用pig.

hive

不想用程式語言開發mapreduce的朋友比如db們,熟悉sql的朋友可以使用hive開離線的進行資料處理與分析工作。

注意hive現在适合在離線下進行資料的操作,就是說不适合在挂在真實的生産環境中進行實時的線上查詢或操作,因為一個字“慢”。相反

起源于facebook,hive在hadoop中扮演資料倉庫的角色。建立在hadoop叢集的最頂層,對存儲在hadoop群上的資料提供類sql的接口進行操作。你可以用 hiveql進行select,join,等等操作。

如果你有資料倉庫的需求并且你擅長寫sql并且不想寫mapreduce jobs就可以用hive代替。

hbase

hbase作為面向列的資料庫運作在hdfs之上,hdfs缺乏随即讀寫操作,hbase正是為此而出現。hbase以google bigtable為藍本,以鍵值對的形式存儲。項目的目标就是快速在主機内數十億行資料中定位所需的資料并通路它。

hbase是一個資料庫,一個nosql的資料庫,像其他資料庫一樣提供随即讀寫功能,hadoop不能滿足實時需要,hbase正可以滿足。如果你需要實時通路一些資料,就把它存入hbase。

你可以用hadoop作為靜态資料倉庫,hbase作為資料存儲,放那些進行一些操作會改變的資料。

pig vs hive

hive更适合于資料倉庫的任務,hive主要用于靜态的結構以及需要經常分析的工作。hive與sql相似促使 其成為hadoop與其他bi工具結合的理想交集。

pig賦予開發人員在大資料集領域更多的靈活性,并允許開發簡潔的腳本用于轉換資料流以便嵌入到較大的 應用程式。

pig相比hive相對輕量,它主要的優勢是相比于直接使用hadoop java apis可大幅削減代碼量。正因為如此,pig仍然是吸引大量的軟體開發人員。

hive和pig都可以與hbase組合使用,hive和pig還為hbase提供了高層語言支援,使得在hbase上進行資料統計處理變的非常簡單

hive vs hbase

hive是建立在hadoop之上為了減少mapreduce jobs編寫工作的批處理系統,hbase是為了支援彌補hadoop對實時操作的缺陷的項目 。

想象你在操作rmdb資料庫,如果是全表掃描,就用hive+hadoop,如果是索引通路,就用hbase+hadoop 。

hive query就是mapreduce jobs可以從5分鐘到數小時不止,hbase是非常高效的,肯定比hive高效的多。