RegionServer作用與組件
? 響應(yīng)client的讀寫請(qǐng)求,進(jìn)行I/O操作(直接繞過(guò)HMaster)
? 與HDFS交互,管理table數(shù)據(jù)
? 當(dāng)Region的大小到達(dá)閥值時(shí)切分Region
? 管理一個(gè)或者多個(gè)region

BlockCache、WAL、Region
BlockCache
? 讀緩存,數(shù)據(jù)被讀取之后仍然緩存在內(nèi)存中
? 有LruBlockCache(效率較高,GC壓力大)和BucketCache(效率較低,沒(méi)有GC壓力)兩種BlockCache,默
認(rèn)為L(zhǎng)ruBlockCache
? 每個(gè)RegionServer中只有一個(gè)BlockCache實(shí)例
Block
- HBase讀寫中的最小單元
- 有四種類型的block:DATA、INDEX、BLOOM和META
-- DATA:存儲(chǔ)用戶數(shù)據(jù)
-- INDEX:用于提高讀取速度,為DATA BLOCK中的cell建立索引
-- BLOOM:用于提高讀取速度,用bloom filter過(guò)濾掉不包含需求數(shù)據(jù)的block
-- META:存儲(chǔ)HFile本身數(shù)據(jù)和元數(shù)據(jù)
WAL:Write Ahead Log
? 為一個(gè)文件
? 0.94之前叫做HLog,存儲(chǔ)在/hbase/.logs/目錄中
? 0.94之后存儲(chǔ)在HDFS上的/hbase/WALs/{HRegionServer_name}中
? 記錄RegionServer上的所有編輯信息(Puts/Deletes操作,屬于哪個(gè)Region),在寫到memstore之前
? 理論上一個(gè)RegionServer上只有一個(gè)WAL實(shí)例,數(shù)據(jù)操作為串行,造成性能瓶頸
多WAL實(shí)例
HBase1.0 之后,通過(guò)使用底層HDFS的多管道實(shí)現(xiàn)了多WAL并行寫入,提高了吞吐量
并行化是通過(guò)對(duì)多個(gè)Region進(jìn)行分區(qū)實(shí)現(xiàn)的,如果只有一個(gè)Region,那么該方案無(wú)效
通過(guò)在hbase-site.xml中配置,然后重啟RegionServer
用于RegionServer失效時(shí),通過(guò)Replay恢復(fù)RegionServer上memstore中尚未持久化的數(shù)據(jù)
Region
Region是表獲取和分布的基本元素,由每個(gè)列族的一個(gè)Store組成,稍后單獨(dú)再表