Hbase架构
2019-12-16 10:24:56 3 举报
Hbase架构图和简析
作者其他创作
大纲/内容
RPC
HRegionServer
Store
StoreFile
HFile
DataNode
HMaster负责管理Hbase的元数据,表结构,表的Region信息负责表的创建,删除和修改负责为HRegionServer分配Region,分配后将元数据写入zk相应位置RegionServer在宕机恢复中起主导作用,会重新分配Region
使Region负载均衡
StoreFile数量增长到一定阈值后,触发Compact合并操作,将多个StoreFile合并成一个StoreFile,分为minor和Major,Minor compact只是进行文件merge操作,而Major compact除了做文件Merge操作,还会将其中的delete项删除。单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个新的Region。父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上。
HBase
HRegion
MemStore
元数据管理
BlockCacheBlockCache 目前主要有LRUBlockCache和SlabCache,以及BucketCache。主要调优部分LRUBlockCache的三段缓存架构:第一段single-access占用25%的比例,也即单次读取区,block被读出后先放到这个区域,当被读到多次后会升级到下一个区域。第二段multi-acsess占用50%的比例,也即多次读取区,当一个被缓冲到单次读取区后又被访问多次,会升级到这个区。in-memory占用25%的比例,这个区域跟Block被访问几次没有什么关系,它只存放那些被设置了IN-MEMORY=true的列族中读取出来的block。LRUBlockCache完全基于JVM Heap的缓存,那么势必会造成一个后果,随着内存中对象越来越多,每隔一段时间肯定会产生Full GC。BucketCache可以有三种工作模式:heap、offheap、file。heap模式表示这些Bucket是从JVM Heap中申请,offheap模式使用DirectByteBuffer技术实现堆外内存存储管理,而file模式使用类似SSD的高速缓存文件存储数据块。Index Block和Bloom Block会被放到LRUCache中,Data Block 被直接放进BucketCache中,这样组合会更合理些。
......
BlockCache
flush
DFS Clinet
zookeeper
zookeeperHMaster选举元数据管理(如meta所在region地址)replication进度管理RegionServer地址与端口保存命名空间列表,表的列表,列族的列表等保存MemStore进行flush的checkpoint
管理 HRegion,与客户端点对点通信,负责实时数据的读写(与hdfs交互)。管理Region的Split分裂、StoreFile的Compaction合并
HLog(WAL)
HLogWAL中写入的记录,以Entry为基本单元,而一个Entry中,包含:WALKey(包含{Encoded Region Name,Table Name,Sequence ID,Timestamp}等关键信息),WALEdit(数据的所有的KeyValues)。一个Region中的一个batch put请求,会被组装成一个Entry。Multi-WAL为多盘写入
Hbase读取数据流程(简单按rowKey的get):1.客户端从ZooKeeper的节点中(/hbase/meta-region-server)读取hbase:meta所在的regionServer位置信息并缓存。2.根据读取到的meta,找到对应rowKey存储业务数据的regionServer信息并缓存。3.RS会优先从MemStore读,没有命中再从BlockCache中读,如果还没读到会从StoreFile中读,并把读到的写入BlockCache中。4.客户端连接regionServer,RS把get处理当成特殊scan(startRow和stopRow相同),结合索引和二分查找法确定在那些HStore中。5.RS会把读取实例成个各种Scanner对象,主要是MemStoreScanner 和 StoreFileScanner,Scanner在RS内部组成一个最小堆 KeyValueHeap,该数据结构核心是一个 PriorityQueue 优先级队列,队列里按照 Scanner 指向的 KeyValue 排序。★缓存:客户端慢慢会缓存更多业务数据所在regionServer的信息,慢慢就不需要从meta中找region信息了。除非regionServer宕机转移,或region被split了,找不到会重新找。
HMaster
HDFS
HRegionServer管理 HRegion,与客户端点对点通信,负责实时数据的读写(与hdfs交互)。管理Region的Split分裂、StoreFile的Compaction合并
Client
compactsplit
0 条评论
下一页