1. 程式人生 > >hive與hbase之間的區別

hive與hbase之間的區別

Hive是什麼?

Apache Hive
是一個構建於Hadoop(分散式系統基礎架構)頂層的資料倉庫,注意這裡不是資料庫。Hive可以看作是使用者程式設計介面,它本身不儲存和計算資料;它依賴於HDFS(Hadoop分散式檔案系統)和MapReduce(一種程式設計模型,對映與化簡;用於大資料並行運算)。其對HDFS的操作類似於SQL—名為HQL,它提供了豐富的SQL查詢方式來分析儲存在HDFS中的資料;HQL經過編譯轉為MapReduce作業後通過自己的SQL 去查詢分析需要的內容;這樣一來,即使不熟悉MapReduce 的使用者也可以很方便地利用SQL 語言查詢、彙總、分析資料。而MapReduce開發人員可以把己寫的mapper 和reducer 作為外掛來支援Hive 做更復雜的資料分析。  HBase
是什麼?

Apache HBase是運行於
HDFS頂層的NoSQL(=Not Only SQL,泛指非關係型的資料庫)資料庫系統。區別於Hive,HBase具備隨即讀寫功能,是一種面向列的資料庫。HBase以表的形式儲存資料,表由行和列組成,列劃分為若干個列簇(row family)。例如:一個訊息列簇包含了傳送者、接受者、傳送日期、訊息標題以及訊息內容。每一對鍵值在HBase會被定義為一個Cell,其中,鍵由row-key(行鍵),列簇,列,時間戳構成。而在HBase中每一行代表由行鍵標識的鍵值對映組合。Hbase目標主要依靠橫向擴充套件,通過不斷增加廉價的商用伺服器,來增加計算和儲存能力。  特性
遵從JDBC的Hive不但可以讓具SQL知識的使用者來間接執行MapReduce作業,同時裡面也整合了目前基於SQL的操作工具。不過,由於預設的資料讀取是全表遍歷的,其時間的耗費也不可避免地相對較大。儘管如此,不盡相同的Hive分割槽方法,其遍歷讀取的資料量也是能夠有所限制的。Hive分割槽允許對儲存在獨立檔案上的資料進行篩選查詢,返回的是篩選後的資料。例如針對日期的日誌檔案訪問,前提是該類檔案的檔名包含日期資訊。  HBase以鍵值對的形式儲存資料。其包含了4種主要的資料操作方式:新增或更新資料行掃描獲取某範圍內的cells為某一具體資料行返回對應的cells從資料表中刪除資料行/列,或列的描述資訊列資訊可用於獲取資料變動前的取值(透過HBase
壓縮策略可以刪除列資訊歷史記錄來釋放儲存空間)。  限制

Hive不支援常規的
SQL更新語句,如:資料插入,更新,刪除。因為其對資料的操作是針對整個資料表的。同時該特點也使得資料查詢用時以數分鐘甚至數小時來進行計算。此外,其MapReduce轉換過程必須遵從預定義的轉換規則。

HBase
的資料查詢是有一套屬於自己類似SQL的操作語言的,這個需要一定的學習來掌握。此外,要執行HBase,ZooKeeper是需要配備的。ZooKeeper是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分散式同步、組服務等。  應用舉例

Hive適用於網路日誌等資料量大、靜態的資料查詢。例如:使用者消費行
為記錄,網站訪問足跡等。但是不適用於聯機實時線上查詢的場合。

HBase能在大資料聯機實時查詢場合大展身手
。例如:Fackbook就利用其對使用者間的傳送的訊息進行聯機實時分析。  小結

Hive
與HBase兩者是基於Hadoop上不同的技術。Hive是一種能執行MapReduce作業的類SQL程式設計介面,Hbase是一種非關係型的資料庫結構。結合這兩者自身的特點,互相結合使用或許能收到相得益彰的效果。例如:利用Hive處理靜態離線資料,利用HBase進行聯機實時查詢,而後對兩者間的結果集進行整合歸併,從而使得資料完整且永葆青春