hadoop主要解決大規模資料離線批量處理,但無法滿足大規模實時資料的處理,所以誕生了hbase。
hbase是乙個分布式資料庫,它必須通過行鍵、列族、列限定符、時間戳來定位資料。
hbase的功能元件:
hbase由庫函式,master和regionserver組成
表和region:
乙個hbase表最初只有乙個region,當資料存滿時,它會進行**
hbase**定址:
hbase查詢資料過程
第一層 zookeeper檔案:記錄了root表的位置
第二層 root表(根資料表): 記錄了meta表(元資料表)的region的位置資訊,root表只能有乙個region
第三層 meta表:記錄了使用者資料表的region的位置資訊,meta表可以有多個region,儲存了hbase所有使用者資料表的region的位置資訊
hbase的儲存容量:
乙個root表只能有乙個region,若乙個region的儲存大小為128mb,按照每行占用1kb計算,128mb可以儲存128mb/1kb = 2¹⁷個meta表,同理乙個meta表也能儲存 2¹⁷ 個使用者資料表,所以最終三層結構可以儲存的region數目為 2³⁴region
**定址的快取機制:
為了加速定址,客戶端會快取位置資訊
hbase是惰性快取,只有當所查詢的資料無法找到時,它才會更新快取
hbase的架構:
zookeeper :hbase沒有單點故障,因為中間有zookeeper,當master掛掉後,zookeeper會使用選舉機制迅速選出乙個leader,它是整個架構的管家
master: 負責對錶的增刪改查、不同regionserver的分配,實現負載均衡
、調整**,合併後region的分布,重新分配故障、失效的regionserver
region server:負責使用者資料的儲存和管理
region server中有很多region,當memstore寫滿之後溢位到storefile中,乙個region中有乙個hlog和多個store,store中有storefile,storefile是hdfs上的hfile在hbase中的表現形式,hfile是最小的儲存單元,region是最小的負載均衡結構單元
資料讀寫過程: 資料會被首先寫入memstore(store快取)中,然後寫入hlog,當寫入到hlog之後,commit提交給客戶端
當讀資料時,會先讀memstore中的資料(因為資料先都是先寫入memstore),如果找不到再去store中找
資料的刷寫: 當memstore中的資料滿了之後,store會執行flush,每flush一次,都會生成乙個新的store file,flush和compaction(合併)操作都是region級別的,當乙個memstore滿了需要flush時,會觸發整個region中所有的store的flush操作,即使其他region中store的資料還沒滿只有少量,所以列族盡量乙個表佔乙個(乙個store),這樣就避免了region的頻繁負載。
放一張region伺服器集群
HBase 學習一(基礎入門)
hbase 是乙個分布式的 面向列的開源資料庫,該技術 於 fay chang 所撰寫的 google bigtable 乙個結構化資料的分布式儲存系統 就像 bigtable 利用了 google 檔案系統 file system 所提供的分布式資料儲存一樣,hbase 在 hadoop 之上提供...
HBase學習筆記(一) 基礎入門
hbase的原型是google的bigtable 受到了該 思想的啟發,目前作為hadoop的子專案來開發維護,用於支援結構化的資料儲存。hbase是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase的目標是儲存...
Hbase 入門簡介
hbase是apache hadoop中的乙個子專案,hbase依託於hadoop的hdfs作為最基本儲存基礎單元,通過使用hadoop的dfs工具就可以看到這些這些資料 儲存資料夾的結構,還可以通過map reduce的框架 演算法 對hbase進行操作,如下圖所示 hbase在產品中還包含了je...