1、Hbase基礎數據庫
HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分佈式和麪向列的動態模式數據庫。和傳統關係數據庫不一樣,HBase採用了BigTable的數據模型:加強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一塊兒。服務器
數據模型:Schema-->Table-->Column Family-->Column-->RowKey-->TimeStamp-->Value併發
2、表的特色負載均衡
大:一個表能夠有數十億行,上百萬列;
無模式:每行都有一個可排序的主鍵和任意多的列,列能夠根據須要動態的增長,同一張表中不一樣的行能夠有大相徑庭的列;
面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索;
稀疏:空(null)列並不佔用存儲空間,表能夠設計的很是稀疏;
數據多版本:每一個單元中的數據能夠有多個版本,默認狀況下版本號自動分配,是單元格插入時的時間戳;
數據類型單一:Hbase中的數據都是字符串,沒有類型。dom
Hbase基本概念分佈式
RowKey:是Byte array,是表中每條記錄的「主鍵」,方便快速查找,Rowkey的設計很是重要。
Column Family:列族,擁有一個名稱(string),包含一個或者多個相關列
Column:屬於某一個columnfamily,familyName:columnName,每條記錄可動態添加
Version Number:類型爲Long,默認值是系統時間戳,可由用戶自定義
Value(Cell):Byte array高併發
物理存儲:
1、Table中全部行都按照row key的字典序排列;
2、Table在行的方向上分割爲多個Region;
3、Region按大小分割的,每一個表開始只有一個region,隨着數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,以後會有愈來愈多的region;
4、Region是Hbase中分佈式存儲和負載均衡的最小單元,不一樣Region分佈到不一樣RegionServer上。性能
5、Region雖然是分佈式存儲的最小單元,但並非存儲的最小單元。Region由一個或者多個Store組成,每一個store保存一個columns family;每一個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在內存中,StoreFile存儲在HDFS上。
大數據
HBase容錯性
Master容錯:Zookeeper從新選擇一個新的Master
無Master過程當中,數據讀取仍照常進行;ü
無master過程當中,region切分、負載均衡等沒法進行;ü
RegionServer容錯:定時向Zookeeper彙報心跳,若是一旦時間內未出現心跳,Master將該RegionServer上的Region從新分配到其餘RegionServer上,失效服務器上「預寫」日誌由主服務器進行分割並派送給新的RegionServer
Zookeeper容錯:Zookeeper是一個可靠地服務,通常配置3或5個Zookeeper實例
Region定位流程:
尋找RegionServer
spa
ZooKeeper--> -ROOT-(單Region)--> .META.--> 用戶表
-ROOT-
表包含.META.表所在的region列表,該表只會有一個Region;
Zookeeper中記錄了-ROOT-表的location。
.META.
表包含全部的用戶空間region列表,以及RegionServer的服務器地址。
storing largeamounts of data(100s of TBs)
need high write throughput
need efficient random access(key lookups) within large data sets
need to scale gracefully with data
for structured and semi-structured data
don't need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)
大數據量存儲,大數據量高併發操做
須要對數據隨機讀寫操做
讀寫訪問均是很是簡單的操做
二者都具備良好的容錯性和擴展性,均可以擴展到成百上千個節點;
HDFS適合批處理場景
不支持數據隨機查找
不適合增量數據處理
不支持數據更新