什麼是HBase?
高可靠,高性能,面向列,可伸縮的分佈式存儲系統【HBase的原型是Google的BigTable論文】
【數十億行,數百萬列的數據存儲】
HBase特點?
1.海量存儲(PB級別的數據量)
2.列式存儲(列簇(ColumnFamily)存儲)
3.極易擴展(1.Regionserve的擴展 2. HDFS的擴展 )
4.高併發(多核)【併發:線程併發,同一個cpu內核,搶佔資源 / 並行:進程並行,多個cpu同時執行】
5.稀疏存儲(在列數據爲空的情況下,是不會佔用存儲空間的)
【
- HBase的表模型與關係型數據庫的表模型不同:
- HBase的表沒有固定的字段定義;
- HBase的表中每行存儲的都是一些key-value對
- HBase的表中有列簇的劃分,用戶可以指定將哪些kv插入哪個列族
- HBase的表在物理存儲上,是按照列簇來分割的,不同列簇的數據一定存儲在不同的文件中
- HBase的表中的每一行都固定有一個行鍵,而且每一行的行鍵在表中不能重複
- HBase中的數據,包含行鍵,包含key,包含value,都是byte[ ]類型,HBase不負責爲用戶維護數據類
型
- HBase對事務的支持很差
- HBase基於hadoop : HBase的存儲依賴於HDFS
】
HBase架構?
rowkey | base_info | other_info |
1 |
name:ww age:20 sex:m |
address:China school:Tsinghua Universit |
1.HBase的存儲結構
(1)cell【單元格】
- 關係型數據庫中的表模型是由行和列構成,交叉點我們稱之爲Cell(單元格),用於存儲字段(Column)的
數據。
- Hbase的表模型與關係型數據庫的表模型不同。在單元格上是以 key-value 形式來存儲某一個字段
(Column)數據的。
- 版本號(Timestamp)每一個單元格都有自己的版本號。
rowkeyX |
name:www Timestamp:15523598452136 |
name:iii Timestamp:15523598452165 |
(2)rowkey【行鍵】
- rowkey用於區分那一行記錄,
- 在Hbase中的表中的rowkey不能重複
(3)columnFamily【列簇】
1. 列族是是多個列的集合。用於統一管理相似的列數據。
2. Hbase會盡量把同一個列族的列放在同一個服務器上,這樣可以提高存取效率,可以批量管理有關聯的一
堆列。
3. 一個列族對應一個目錄。不同的列族一定存儲在不同的文件中
強調:業務需求一般也都是查詢相關列信息,而非select *
4. hbase在建表時,指定的是列族,而非列,列族的個數有限制(默認是10個)
5. 列族是由多個列組成,列族的成員可以有上百萬個。
6. 列族成員的表示方式:ColFamiName:colName
HBase體系架構
1. Client :
- 包含訪問hbase的接口。比如,linux shell,java api。
- 它會維護對應的cache來加速訪問hbase的速度。META的元數據信息
2. Zookeeper :
- 監控Hmaster的狀態,保證有且僅有一個活躍的Hmaster。達到高可用。
- 它可以存儲所有region的尋址入口。如:root表在哪一臺服務器上。
- 實時監控HregionServer的狀態,感知HRegionServer的上下線信息,並實時通知給Hmaster。
- 存儲hbase的部分元數據。存儲元數據的統一入口地址
3. HMaster :【負載均衡】
- 1. 爲HRegionServer分配Region(新建表等)。 負責HRegionServer的負載均衡。 負責Region的重新分配
- HRegionServer宕機之後的Region分配,
- HRegion裂變:當Region過大之後的拆分)。
- 2. Hdfs上的垃圾回收。
- 3. 處理schema的更新請求
-4.處理元數據的變更
-5.通過Zookeeper發佈自己的位置給客戶端
4. RegionServer :
- 1. 維護HMaster分配給的Region(管理本機的Region)。
- 2. 處理client對這些region的讀寫請求,並和HDFS進行交互(Hlog的寫入,HFile的讀寫)。
- 3. 負責切分在運行過程中逐漸變大的Region。
5. HLog :
- 1. 對HBase的操作進行記錄,使用WAL寫數據,優先寫入Hlog.
比如:put操作時,先寫日誌再寫memstore,這樣可以防止數據丟失,即使丟失也可以回滾。
6. HRegion :
- 1. HBase中分佈式存儲和負載均衡的最小單元,它是表或者表的一部分。
7. Store :
- 1. 相當於一個列簇
8. Memstore :
- 1. 內存緩衝區,用於將數據批量刷新到hdfs中,默認大小爲128M
9. HStoreFile :
- 1. 和HFile概念一樣,不過是一個邏輯概念。HBase中的數據是以HFile存儲在Hdfs上。