1.HBase(NoSQL:不是關系型數據庫)的邏輯數據模型
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。HBase利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作為協調工具。
1.1 表(table),是存儲管理數據的。
1.2 行鍵(row key),類似于MySQL中的主鍵。
行鍵是HBase表天然自帶的。
1.3 列族(column family),列的集合。
HBase中列族是需要在定義表時指定的,列是在插入記錄時動態增加的。
HBase表中的數據,每個列族單獨一個文件。
1.4 時間戳(timestamp),列(也稱作標簽、修飾符)的一個屬性。
行鍵和列確定的單元格,可以存儲多個數據,每個數據含有時間戳屬性,數據具有版本特性。
如果不指定時間戳或者版本,默認取最新的數據。
1.5 存儲的數據都是字節數組。
1.6 表中的數據是按照行鍵的順序物理存儲的。
2.HBase的物理數據模型
2.1 HBase是適合海量數據(如20PB,1024T=1P)的秒級簡單查詢的數據庫。
2.2 HBase表中的記錄,按照行鍵進行拆分, 拆分成一個個的region。
許多個region存儲在region server(單獨的物理機器)中的。
這樣,對表的操作轉化為對多臺region server的并行查詢。
3.HBase的體系結構
3.1 HBase是主從式結構,HMaster、HRegionServer
?
Client 包含訪問hbase 的接口,client 維護著一些cache 來加快對hbase 的訪問,比如regione 的位置信息
Zookeeper 保證任何時候,集群中只有一個running master
?存貯所有Region 的尋址入口
?實時監控Region Server 的狀態,將Region server 的上線和下線信息,實時通知給Master
? ??存儲Hbase 的schema,包括有哪些table,每個table 有哪些column family
Master 可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master運行
?為Region server 分配region
?負責region server 的負載均衡
? ? ? ? ? ? ? ? 發現失效的region server 并重新分配其上的region
Region Server 維護Master 分配給它的region,處理對這些region 的IO請求
?負責切分在運行過程中變得過大的region
?
?
HBase中有兩張特殊的Table,-ROOT-和.META.
1、.META.:記錄了用戶表的Region信息,.META.可以有多個regoin
2、-ROOT-:記錄了.META.表的Region信息,-ROOT-只有一個region Zookeeper中記錄了-ROOT-表的location
Client訪問用戶數據之前需要首先訪問zookeeper,然后訪問-ROOT-表,接著訪問.META.表,最后才能找到用戶數據的位置去訪問
?