1. 程式人生 > >HIVE和HBASE區別

HIVE和HBASE區別

Hive中的表是純邏輯表,就只是表的定義等,即表的元資料。Hive本身不儲存資料,它完全依賴HDFS和MapReduce。這樣就可以將結構化的資料檔案對映為為一張資料庫表,並提供完整的SQL查詢功能,並將SQL語句最終轉換為MapReduce任務進行執行。 而HBase表是物理表,適合存放非結構化的資料。

1. 兩者分別是什麼?  

 Apache Hive是資料倉庫。通過Hive可以使用HQL語言查詢存放在HDFS上的資料。HQL是一種類SQL語言,這種語言最終被轉化為Map/Reduce. 雖然Hive提供了SQL查詢功能,但是Hive不能夠進行互動查詢--因為它是基於MapReduce演算法。
    Apache Hbase Key/Value,基礎單元是cell,它執行在HDFS之上。和Hive不一樣,Hbase的能夠在它的資料庫上實時執行,而不是執行MapReduce任務,。
2. 兩者的特點
  Hive幫助熟悉SQL的人執行MapReduce任務。因為它是JDBC相容的。執行Hive查詢會花費很長時間,因為它會預設遍歷表中所有的資料。但可以通過Hive的分割槽來控制。因為這樣一來檔案大小是固定的,就這麼大一塊儲存空間,從固定空間裡查資料是很快的。
    HBase通過儲存key/value來工作。注意版本的功能。


4. 應用場景
    Hive適合用來對一段時間內的資料進行分析查詢,例如,用來計算趨勢或者網站的日誌。Hive不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。
    Hbase非常適合用來進行大資料的實時查詢。Facebook用Hbase進行訊息和實時的分析。它也可以用來統計Facebook的連線數。
5. 總結
    Hive和Hbase是兩種基於Hadoop的不同技術--Hive是一種類SQL的引擎,可以直接將檔案轉成資料庫。並且執行MapReduce任務,Hbase是一種在Hadoop之上的NoSQL 的Key/vale資料庫。Hive可以用來進行統計查詢,HBase可以用來進行實時查詢。資料也可以從Hive寫到Hbase,再從Hbase寫回Hive。