hbase系列之:初識hbase

1、概述node

  在hadoop生態圈裏,hbase可謂是鼎鼎大名。江湖傳言,hbase能夠實現數十億行X數百萬列的實時查詢,可橫向擴展存儲空間。若是傳言爲真,那得好好了解了解hbase。本文從概念上介紹hbase,稍微有點抽象,但這是學習hbase必需要了解的基礎理論;若是想直接瞭解hbase的實操內容,可跳過本博文。數據庫

2、hbase介紹數組

  先看看hbase官方的介紹:hbase是hadoop數據庫,是一個分佈式的,可擴展的大數據存儲庫;當須要對大數據進行隨機,實時讀/寫訪問時,可使用hbase數據庫;hbase的目標是在商業硬件集羣上託管很是大的表-數十億行X百萬列;hbase是一個開源的、分佈式的、版本化的非關係型數據庫,模仿Google的bigtable;正如bigtable利用Google文件系統提供分佈式數據存儲同樣,hbase在hadoop和hdfs上提供相似的功能。緩存

  通俗來講:服務器

  一、Hbase是一個在HDFS(也能夠是普通文件系統)上開發的面向列的分佈式數據庫,若是須要實時地隨機訪問超大規模數據集,可使用HBASE。數據結構

  二、Hbase可以簡單的經過增長節點來達到現行擴展。架構

  三、Hbase不是關係型數據庫,不支持SQL。分佈式

3、hbase的基本概念oop

  一、Hbase表中的單元格(cell)有版本號,默認狀況下自動分配版本號,爲數據插入Hbase表單元格的時間戳,單元格的內容是未經解釋的字節數組。
  二、Hbase中的行是根據鍵(row key)進行排序的。
  三、Hbase中只容許主鍵創建索引,能夠經過幾種策略來優化其餘字段的查詢性能。
  四、建表時必須先指定列族,表建好以後列族不可增長,列族中的列能夠根據實際須要增長。
  五、物理上,全部列族成員都在一塊兒存儲,因爲調優都是居於列族的,因此全部列族成員都應該有相同的訪問模式和大小特徵。性能

  六、區域:

    ①、hbase自動把表水平劃分紅區域,每一個區域由它所屬的表、所包含的第一行和最後一行(不包括)三個屬性來表示;
    ②、區域是在hbase集羣上分佈數據的最小單位;
    ③、一個太大的而沒法放在單臺服務器上的表會被放到服務器集羣上,其中每一個節點都負責管理表全部區域的一個

  七、加鎖:不管設計多少列,hbase對行的更新都是「原子的」。

4、hbase的做用

  一、海量數據存儲:可以存儲百億行數據和百萬列數據。

  二、準實時查詢:可以在百毫秒內返回查詢數據。

5、hbase的特色

  一、容量大:Hbase單表能夠有百億行、百萬列,數據矩陣橫向和縱向兩個維度所支持的數量級都很是具備彈性。(通常關係型數據庫行在500萬如下,列在30列一下。)
  二、面向列:Hbase是面向列的存儲和權限控制,並支持獨立檢索。列式存儲,其數據在表中按照某列存儲的,這樣在查詢只須要少數幾個字段時,能大大減小讀取的數據量。(實時動態增長列;單獨對某一列作一些操做)
  三、多版本:Hbase每一列的數據存儲有多個Version。
  四、稀疏性:爲空的列並不佔用存儲空間,表能夠設計得很是稀疏。
  五、擴展性:底層依賴於hdfs。若是磁盤空間不夠時,增長datanode節點或增長datanode節點的存儲便可。
  六、高可靠性:WAL機制保證了數據寫入時不會因集羣異常而致使寫入數據丟失:Replication機制保證了在集羣出現嚴重問題時,數據不會發生丟失或損壞。並且Hbase底層使用hdfs,hdfs自己也有備份機制。
  七、高性能:底層的LSM數據結構和Rowkey有序排列等架構上的獨特設計,使得Hbase有很是高的寫入性能。region切分、主鍵索引和緩存機制使得Hbase在海量數據下具有必定的隨機讀取性,該性能針對Rowkey的查詢能夠達到毫秒級別。

6、hbase與關係型數據庫的簡要比較

7、hbase架構

hbase架構圖以下圖所示:

  •   Master

       Master負責監視集羣中的全部RegionServer實例、轉移故障RegionServer、劃分區域,而且是全部元數據更改的接口。在分佈式集羣中,Master一般運行在NameNode上運行。集羣中能夠存在多個Master(multi-Master),可是隻有一個Master處於活躍狀態(active),其餘Master處於備份狀態(Backup),若是活躍Master宕機或者發生異常,將從備份Master中選舉出新的活躍Master來接管集羣。

  •        hdfs

                 一般,Hbase使用hdfs來持久化數據。默認狀況下,hbase是把數據存儲在本地文件系統中,可是,若是要使用Hbase集羣,就須要把Hbase的存儲位置指向hdfs集羣。

  •        zookeeper

          Hbase依賴zookeeper來實現分佈式協調。zookeeper管理hbase:meta目錄表的位置以及當前集羣的主機地址等信息;當客戶端要鏈接到Hbase集羣時,須要經過zookeeper來鏈接hbase集羣。

  •   RegionServer

         RegionServer負責服務和管理區域(region),還負責區域的劃分並通知Hbase Master有了新的子區域;RegionServer包含多個region,是直接存儲數據的地方,在分佈式集羣中,RegionServer在DataNode上運行。

8、hbase應用場景

  hbase能夠用在交通、金融、電商、移動等超大規模數據的領域。

9、總結

  hbase爲億級數據秒級響應而生,從底層架構到存儲模式,專爲超大規模數據的存儲而設計,可是查詢條件不能多樣化。在選擇hbase做爲數據庫時,應考慮其利弊,適應用場景慎重選擇。