HBase簡介架構

什麼是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上。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章