[英]How does Hive compare to HBase?
我有興趣了解最近發布的( http://mirror.facebook.com/facebook/hive/hadoop-0.17/)Hive在性能方面與HBase的比較。 Hive使用的類似SQL的接口比我們實現的HBase API要好得多。
很難找到關於Hive的內容,但我在Hive網站上發現這個片段大量傾向於支持HBase(粗體添加):
Hive基於Hadoop,這是一個批處理系統。 因此,該系統不會也不能承諾對查詢的低延遲 。 這里的范例嚴格來說是提交工作並在完成工作時得到通知而不是實時查詢。 因此,不應將其與像Oracle這樣的系統進行比較,在這些系統中,對數據量顯着減少的數據進行分析,但分析反復進行得更多,迭代之間的響應時間少於幾分鍾。 對於Hive查詢,即使是最小的作業,響應時間也可能是5-10分鍾,而對於較大的作業,這甚至可能會持續數小時。
由於HBase和HyperTable都是關於性能的(以Google的BigTable為模型),它們聽起來肯定比Hive快得多,代價是功能和更高的學習曲線(例如,它們沒有連接或SQL - 類似語法)。
從一個角度來看,Hive由五個主要組件組成:類似SQL的語法和解析器,查詢計划器,查詢執行引擎,元數據存儲庫和列式存儲布局。 其主要關注點是數據倉庫式分析工作負載,因此不需要按密鑰對值進行低延遲檢索。
HBase有自己的元數據存儲庫和列式存儲布局。 可以通過HBase表創建HiveQL查詢,允許HBase利用Hive的語法和解析器,查詢計划器和查詢執行引擎。 有關更多詳細信息,請參閱http://wiki.apache.org/hadoop/Hive/HBaseIntegration 。
Hive是一種分析工具。 就像豬一樣,它設計用於通過利用map reduce來臨時批量處理潛在的大量數據。 想想terrabytes。 想象一下,試圖在關系數據庫中做到這一點......
HBase是基於BigTable的基於列的鍵值存儲。 雖然您可以通過HBase運行map reduce作業,但您本身無法進行查詢。 它的主要用例是按鍵獲取行或掃描行的范圍。 一個主要特征是,當掃描跨越“族”列的行鍵范圍時,能夠具有數據局部性。
據我所知,Hive與Pig相當。 Hive與SQL類似,Pig是基於腳本的。 Hive似乎更復雜的是查詢優化和執行引擎,並且需要最終用戶需要指定模式參數(分區等)。 兩者都打算處理文本文件或sequenceFiles。
HBase用於鍵值數據存儲和檢索...您可以掃描或過濾這些鍵值對(行)。 您無法對(鍵,值)行執行查詢。
截至最新的Hive版本,由於Hive和HBase現已集成 ,因此需要進行少量更新。 這意味着Hive可以用作HBase數據存儲區的查詢層。 現在,如果人們正在尋找替代的HBase接口,Pig還提供了一種非常好的加載和存儲HBase數據的方法 。 此外,看起來Cloudera Impala可能會在HBase之上提供基於Hive的大量性能查詢。 與傳統的Hive設置相比,它們的查詢速度提高了45倍。
Hive和HBase用於不同目的 。
蜂巢:
優點:
缺點:
HBase的:
優點:
缺點:
摘要:
Hive可用於分析查詢,而HBase可用於實時查詢。 甚至可以從Hive到HBase讀取和寫入數據,然后再返回。
為了比較Hive和Hbase,我想回憶一下下面的定義:
旨在處理事務的數據庫不是為處理分析而設計的。 它的結構不是很好地進行分析。 另一方面,數據倉庫的結構使得分析變得快速而簡單。
Hive是一個建立在Hadoop之上的數據倉庫基礎架構,適用於長時間運行的ETL作業。 Hbase是一個旨在處理實時事務的數據庫
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.