簡體   English   中英

Hive與HBase相比如何?

[英]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用於不同目的

蜂巢:

優點:

  1. Apache Hive是一個建立在Hadoop之上數據倉庫基礎架構
  2. 它允許查詢存儲在HDFS上的數據,以便通過類似SQL的語言 HQL進行分析,這種語言將轉換為一系列Map Reduce作業
  3. 它只在Hadoop上運行批處理
  4. 符合JDBC ,它還與現有的基於SQL的工具集成
  5. Hive支持分區
  6. 它支持對一段時間內收集的數據進行分析查詢

缺點:

  1. 它目前不支持更新語句
  2. 應該為它提供預定義的模式,以將文件和目錄映射到列中

HBase的:

優點:

  1. 可擴展的分布式數據庫 ,支持大型表的結構化數據存儲
  2. 它為您的大數據提供隨機,實時的讀/寫訪問 HBase操作在其數據庫而不是MapReduce作業上實時運行
  3. 它支持對表的分區 ,並且表進一步拆分為列族
  4. 使用Hadoop 橫向擴展大量數據
  5. 存儲或檢索時提供基於密鑰的數據訪問。 支持添加或更新行。
  6. 支持數據的多才多藝

缺點:

  1. HBase查詢是用需要學習的自定義語言編寫的
  2. HBase不完全符合ACID標准
  3. 它不能用於復雜的訪問模式(例如連接)
  4. 在進行大批量MapReduce時,它也不是HDFS的完全替代品

摘要:

Hive可用於分析查詢,而HBase可用於實時查詢。 甚至可以從Hive到HBase讀取和寫入數據,然后再返回。

為了比較Hive和Hbase,我想回憶一下下面的定義:

旨在處理事務的數據庫不是為處理分析而設計的。 它的結構不是很好地進行分析。 另一方面,數據倉庫的結構使得分析變得快速而簡單。

Hive是一個建立在Hadoop之上的數據倉庫基礎架構,適用於長時間運行的ETL作業。 Hbase是一個旨在處理實時事務的數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM