初步掌握HBase

一、HBase概述數據庫

  HBase是hadoop生態系統中的重要組成部分,是一個開源的、面向列、適合存儲海量非結構化數據或半結構化數據,具有高可靠性、高性能、可靈活擴展伸縮、支持實時數據讀寫的分佈式存儲系統數組

  存儲在Hbase中的表的特徵緩存

  一、大:一個表能夠有上億行,上百萬列服務器

  二、任意模式:每行都有一個可排序的主鍵和任意多的列,列能夠根據須要動態的增長,同一張表中的不一樣的行,它們的列能夠不相同架構

  三、面向列:面向列(簇)的存儲和權限控制,列(簇)獨立檢索負載均衡

  四、稀疏:對於爲空(NULL)的列,並不佔用存儲空間,所以,表能夠設計的很是稀疏分佈式

  五、多個數據版本:每一個單元中的數據能夠有多個數據版本,默認狀況下自動分配版本號,版本號是單元格插入時的時間戳oop

  六、惟一數據類型:Hbase中的數據都是字符串類型,沒有其它數據類型性能

二、HBase數據模型url

  一、Table

    一、Table中的數據能夠很是稀疏

    二、每一個Table中的全部行都是按照row key的字典序排序

  二、Row Key

    一、它是byte array(字節數組)

    二、它是表中每條記錄的主鍵

    三、經過Row Key方便查找每行記錄

  三、ColumnFamily

    一、每一個ColumnFamily都有一個名稱

    二、它包含一個或者多個列

    三、每一個表能夠由多ColumnFamily組成

    四、每一個ColumnFamily存儲在HDFS上的一個單獨的文件中

    五、Key和版本號在每一個ColumnFamily中都保存有一份

  四、Column

    一、它屬於某一個ColumnFamily。好比,FamilyName:columnName

    二、HBase表中的列是動態的列

  五、TimeStamp

    一、每個Row Key能夠有多個版本號

    二、版本號能夠由用戶來提供

  六、Cell

    一、存儲具體的byte array

    二、單元內的空值不會被保存

三、HBase物理模型

  一、每一個Table會在行的方向上,分割爲多個Region

      clip_image001

  二、Region按照數據大小來分割,每個Table剛開始只有一個region,隨着數據的增多,region就會不斷的增大,當增大到一個閥值的時候,region就會等分紅兩個新的region。當Table愈來愈大的時候,region就會愈來愈多

    clip_image002

  三、每一個region是HBase中分佈式操做和負載均衡的最小單位,不一樣的region可能分佈到不一樣的regionServer上

    clip_image004

  四、Region雖然是分佈式操做的最小單元,但並非存儲的最小單元,在region裏面,又劃分了不少更小的單位進行存儲,以下所示

    clip_image006

  一、Region由一個或者多個Store組成,每一個Store保存一個ColumnFamily

  二、每一個Store又由一個memStore和多個storefile組成

  三、memstore存儲在內存中,storefile存儲的HDFS上

四、HBase基本架構

      clip_image008

  一、Client

    能夠有多個Client運行在不一樣機器上,Client也會維護了一個緩存,用來加快對HBase的訪問速度

  二、Zookeeper

    一、保證在任什麼時候候,集羣中有且僅有一個master

    二、存儲了全部region的尋址入口

    三、實時監控RegionServer的健康情況,並實時的通知給Master

    四、存儲的HBase的shecma和table的元數據信息

  三、Master

    一、爲RegionServer分配region

    二、負責regionserver的負載均衡

    三、若是發現失效的RegionServer,Master會從新分配它上面的region

    四、管理用戶對table的增刪改查操做

  四、Region Server

    一、RegionServer的做用就是維護region,處理對這些region的I/O請求

    二、RegionServer也負責切分超過閥值的region

  五、Hbase中的Zookeeper

      clip_image009

  一、Hbase的運行依賴於Zookeeper

  二、Master與RegionServer啓動時會向Zookeeper註冊,Zookeeper能夠監控Master和RegionServer的健康情況

  三、Hbase經過引入Zookeeper解決了Master的單點故障

六、Hbase支持的操做

  一、HBase全部的操做均基於rowkey的操做

  二、HBase支持增刪改查和scan

  三、Hbase支持單行操做

    一、Put

    二、Get

    三、Scan

  四、Hbase支持多行操做

    一、Scan

    二、MultiPut

  五、Hbase沒有內置的join操做,但能夠經過MapReduce來解決

七、Hbase Write-Ahead-Log(預先寫日誌)

      clip_image011

八、Hbase容錯機制

  一、Master容錯:

    實際生產環境中,HBase通常配置多個Master,當對外提供服務的Master掛掉以後,Zookeeper會從新選舉一個新的Master

    一、數據讀取不受影響,由於數據讀取過程不須要與Master交互

    二、region切分、負載均衡等沒法進行

  二、RegionServer容錯:

    一、按期的向Zookeeper提供心跳,若是Zookeeper一段時間沒有收到心跳信息,Zookeeper會通知Master,RegionServer掛掉了,Master會將該RegionServer上的region從新分配到其餘RegionServer上

    二、失效RegionServer上的預寫日誌,會由主服務器進行分割,而後分配給對應的RegionServer上

  三、Zookeeper容錯:

    Zookeeper能夠提供一個可靠的服務,通常咱們配置3個、5個、7個等奇數個實例

九、Hbase中的region定位

      clip_image013

  一、首先要訪問Zookeeper,查找到ROOT表的位置

  二、從ROOT表裏面獲取META表的位置,咱們在對應RegionServer上讀取META表

  三、在META表裏面定位到咱們要找的region的位置

  四、到RegionServer上來讀取對應region上面的數據

十、Hbase與關係型數據庫的比較

      clip_image015

 

若是,您認爲閱讀這篇博客讓您有些收穫,不妨點擊一下右下角的【推薦】。
若是,您但願更容易地發現個人新博客,不妨點擊一下左下角的【關注我】。
若是,您對個人博客所講述的內容有興趣,請繼續關注個人後續博客,我是【劉超★ljc】。

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索