Hadoop數據存儲—Hbase

大家都知道Hadoop是一個數據庫,其實說的的就是Hbase。它和我們平常理解的關係型數據庫有什麼區別呢?

Hadoop數據存儲—Hbase

1. 它是NoSQL的,它沒有SQL的接口,有自己的一套API。

2. 關係型數據庫可以做彙總,可以進行常規的分析,但是Hbase不可以,它不能做彙總。那麼Hbase操作不方便,不能做彙總,不能做分析,有什麼作用呢?它的隨機讀寫效率很高,可以存儲海量數據,基於某個網點,某個城市,某個機器隨機去查詢速度快。或者去存儲基於時間序列的數據,比如微信、微博、日誌的數據,效率很高。

3. 它的存儲是列式的,平常我們接觸的MySQL,Oracle,RDBMS都是行存儲。行存儲和列存儲的區別是:行存儲適合在線事務的場景,適合隨機的訪問,比如去銀行修改賬戶記錄,修改個人信息,這個修改就是從數據庫中找到你信息所在的行。列存儲就是以列為單位進行連續存儲,如果以列存儲放到銀行這個場景中會是怎樣的一種效果呢?如果想要修改信息,那麼定義到用戶所在行信息,就會掃描到整個表,所以行存儲主要用於在線事務處理,而列存儲適用於數據分析。因為在大數據的數據庫場景中,我們會構建很寬的事實表,通過信息模型有個中心,圍繞這個中心擴散出很多維度,這個中間表是一個很寬的表,在我們進行特定業務分析的時候,比如分析廣告業務推廣的情況,可能只需要從很多資料中選取一部分變量進行分析,如果使用行存儲,那麼就是全表掃描,而使用列存儲會選取特定部分,效率很高。

HBase vs RDBMS

Hadoop數據存儲—Hbase

通過以上描述,我們分析一下hbase的特點:

(1)存儲海量數據:Pb+

(2)高吞吐:每秒每個節點上千次寫

(3)適合處理稀疏數據(半結構化數據):存儲一行的空列沒有空間浪費。因為半結構化數據有大量的空存在,那麼使用結構化數據存儲到關係型數據庫,就會有大量的空間浪費,而且不適合做分析。

但是hbase訪問模式是受到限制的,它對基於行鍵的查找做了優化,而不是全文查詢;沒有事務,只支持單行操作。

說了這麼多,那麼我們為什麼使用Hbase呢?這裡我們做一個對比:

(1) 使用HDFS

你只需要追加到數據集(沒有隨機寫)

通常讀取整個數據集(沒有隨機讀)

(2)使用HBase

你需要隨機寫或讀

每秒對TB級的數據執行上千次操作

(3)使用RDBMS

數據放在一個大節點上

需要全部的事務支持

需要實時查詢的能力

【1】想了解大數據知識,可以關注我下方評論轉發後,私信“資料”。

【2】部分資料有時間限制,抓緊時間吧!

感謝大家支持!


分享到:


相關文章: