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 条评论
 下一页
  
   
   
   
   
  
  
  
  
  
  
  
  
 