一、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
二、Region按照數據大小來分割,每個Table剛開始只有一個region,隨着數據的增多,region就會不斷的增大,當增大到一個閥值的時候,region就會等分紅兩個新的region。當Table愈來愈大的時候,region就會愈來愈多
三、每一個region是HBase中分佈式操做和負載均衡的最小單位,不一樣的region可能分佈到不一樣的regionServer上
四、Region雖然是分佈式操做的最小單元,但並非存儲的最小單元,在region裏面,又劃分了不少更小的單位進行存儲,以下所示
一、Region由一個或者多個Store組成,每一個Store保存一個ColumnFamily
二、每一個Store又由一個memStore和多個storefile組成
三、memstore存儲在內存中,storefile存儲的HDFS上
四、HBase基本架構
一、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
一、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(預先寫日誌)
八、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定位
一、首先要訪問Zookeeper,查找到ROOT表的位置
二、從ROOT表裏面獲取META表的位置,咱們在對應RegionServer上讀取META表
三、在META表裏面定位到咱們要找的region的位置
四、到RegionServer上來讀取對應region上面的數據
十、Hbase與關係型數據庫的比較
若是,您認爲閱讀這篇博客讓您有些收穫,不妨點擊一下右下角的【推薦】。
若是,您但願更容易地發現個人新博客,不妨點擊一下左下角的【關注我】。
若是,您對個人博客所講述的內容有興趣,請繼續關注個人後續博客,我是【劉超★ljc】。
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。