大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供簡單的SQL查詢功能,它的本質就是將SQL語句轉換為MapReduce任務進行運行。

大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別


HBase是一個高可靠性、高性能、面向列、可伸縮的一個開源的非關係型分佈式數據庫(NoSQL),它參考了谷歌的BigTable建模,實現的編程語言為Java。

大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別

一、Hive和HBase的特點

Hive本身不存儲數據,它完全依賴HDFS和MapReduce。這樣就可以將結構化的數據文件映射為一張數據庫表,並提供完整的SQL查詢功能,將SQL語句最終轉換為MapReduce任務進行運行。而HBase表是物理表,適合存放非結構化的數據。

大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別

Hive幫助熟悉SQL的人運行MapReduce任務。因為它是JDBC兼容的,同時,它也能夠和現存的SQL工具整合在一起。運行Hive查詢會花費很長時間,因為它會默認遍歷表中所有的數據。雖然有這樣的缺點,一次遍歷的數據量可以通過Hive的分區機制來控制。分區允許在數據集上運行過濾查詢,這些數據集存儲在不同的文件夾內,查詢的時候只遍歷指定文件夾(分區)中的數據。例如,這種機制可以用來只處理在某一個時間範圍內的文件,只要這些文件名中包括了時間格式。

HBase通過存儲key/value來工作。它支持四種主要的操作:增加或者更新行,查看一個範圍內的cell,獲取指定的行,刪除指定的行、列或者是列的版本。版本信息用來獲取歷史數據(每一行的歷史數據可以被刪除,然後通過HBase compactions就可以釋放出空間)。雖然HBase包括表格,但是schema僅僅被表格和列簇所要求,列不需要schema。HBase的表格包括增加/計數功能。


Hive是基於MapReduce來處理數據,而MapReduce處理數據是基於行的模式;HBase處理數據是基於列的而不是基於行的模式,適合海量數據的隨機訪問。

大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別

HBase表是疏鬆存儲的,因此用戶可以給行定義各種不同的列;而Hive表是稠密型,即定義多少列,每一行有存儲固定列數的數據。

Hive使用Hadoop來分析處理數據,而Hadoop系統是批處理系統,因此不能保證處理的低遲延問題;而HBase是近實時系統,支持實時查詢。


二、Hive和HBase對比

Hive-Hadoop上的數據倉庫框架

(1) 數據倉庫

Hive的本質其實就相當於將HDFS中已經存儲的文件在MySQL中做了一個雙射關係,以方便使用HQL去管理查詢。

(2) 用於數據分析、清洗

Hive適用於離線的數據分析和清洗,延遲較高。

(3) 基於HDFS和MapReduce

Hive存儲的數據依舊在DataNode上,編寫的HQL語句將轉換為MapReduce代碼執行。


HBase-Hadoop上的非關係型的分佈式數據庫

(1) 數據庫

是一種面向列存儲的非關係型數據庫。

(2) 用於存儲結構化和非結構化的數據

適用於單表非關係型數據的存儲,不適合做關聯查詢,類似JOIN等操作。

(3) 基於HDFS

數據持久化存儲的體現形式是Hfile,存放於DataNode中,被ResionServer以region的形式進行管理。

(4) 延遲較低,接入在線業務使用

面對大量的企業數據,HBase可以直線單表大量數據的存儲,同時提供了高效的數據訪問速度。


三、應用場景

Hive的主要用途:用來做離線數據分析,比直接用MapReduce程序開發效率更高。Hive 利用 HDFS存儲數據,利用 MapReduce 查詢分析數據 。

Hive適合用來對一段時間內的數據進行分析查詢,例如,用來計算趨勢或者網站的日誌。Hive不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。


HBase非常適合用來進行大數據的實時查詢。Facebook用HBase進行消息和實時的分析。它也可以用來統計Facebook的連接數。


四、總結

Hive和HBase是兩種基於Hadoop的不同技術–Hive是一種類SQL的引擎,並且運行MapReduce任務,HBase是一種在Hadoop之上的NoSQL 的Key/vale數據庫。當然,這兩種工具是可以同時使用的。就像用Google來搜索,用FaceBook進行社交一樣,Hive可以用來進行統計查詢,HBase可以用來進行實時查詢,數據也可以從Hive寫到HBase,設置再從HBase寫回Hive。

大數據:瞭解Hadoop生態中Hive和HBase兄弟倆的區別



分享到:


相關文章: