大数据存储---HBase架构原理介绍(下)

这次我们主要介绍HBase的架构和原理

  • 组件介绍
  • 读写流程介绍
  • 路由查询

组件介绍

HBase的架构介绍图
大数据存储---HBase架构原理介绍(下)_第1张图片

Client

  • ①使用HBase RPC机制与HMaster和HRegionServer进行通信;
  • ②Client与HMaster进行通信进行管理类操作;
  • ③Client与HRegionServer进行数据读写类操作。

Zookeeper

  • ①保证任何时候,集群中只有一个running master,避免单点问题;
  • ②存贮所有Region的寻址入口,包括-ROOT-表地址、HMaster地址;
  • ③实时监控Region Server的状态,将Region server的上线和下线信息,实时通知给Master;
  • ④存储Hbase的schema,包括有哪些table,每个table有哪些column family。
    PS:注意
    这里再存储元数据信息的时候,随着数据的存储数量的增大,zookeeper的内存使用量会增大,不堪重负。这里我们会引入metaData特有的元数据存储信息机制。基本思想是:向上抽象。在查询路由中介绍

HMaster

可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。

角色功能:

  • ①为Region server分配region;
  • ②负责region server的负载均衡;
  • ③发现失效的region serve并重新分配其上的region;
  • ④GFS上的垃圾文件回收;
  • ⑤处理用户对标的增删改查操作。

HRegionServer

HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据。

作用:

  • ①维护Master分配给它的region,处理对这些region的IO请求;
  • ②负责切分在运行过程中变得过大的region。
  • 此外,HRegionServer管理一些列HRegion对象,每个HRegion对应Table中一个Region,HRegion由多个HStore组成,每个HStore对应Table中一个Column Family的存储,Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效。

HStore

HBase存储的核心,由MemStore内存存储和StoreFile磁盘存储组成。

HRegion

一个表最开始存储的时候,是一个region。
一个Region中会有个多个store,每个store用来存储一个列簇。如果只有一个column family,就只有一个store。
region会随着插入的数据越来越多,会进行拆分。默认大小是10G一个。

HLog

在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer意外退出,MemStore中的内存数据就会丢失,引入HLog就是防止这种情况。

  • 工作机制:
  • 每个HRegionServer中都会有一个HLog对象,HLog是一个实现Write Ahead Log的类,每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。-
  • 当HRegionServer意外终止后,HMaster会通过Zookeeper感知,HMaster首先处理遗留的HLog文件,将不同region的log数据拆分,分别放到相应region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

读写流程介绍

大数据存储---HBase架构原理介绍(下)_第2张图片

文件存储的原理

大数据存储---HBase架构原理介绍(下)_第3张图片

  • Client通过Zookeeper的调度,向RegionServer发出写数据请求,在Region中写数据。
  • 数据被写入Region的MemStore,直到MemStore达到预设阈值。
  • MemStore中的数据被Flush成一个StoreFile。
  • 随着StoreFile文件的不断增多,当其数量增长到一定阈值后,触发Compact合并操作,将多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除。
  • StoreFiles通过不断的Compact合并操作,逐步形成越来越大的StoreFile。
  • 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个新的Region。父Region会下线,新Split出的2个子Region会被HMaster分配到相应的RegionServer上,使得原先1个Region的压力得以分流到2个Region上。
  • 可以看出HBase只有增添数据,所有的更新和删除操作都是在后续的Compact历程中举行的,使得用户的写操作只要进入内存就可以立刻返回,实现了HBase I/O的高机能。

读取操作流程(查询路由)

大数据存储---HBase架构原理介绍(下)_第4张图片

  • client访问Zookeeper,查找-ROOT-表,获取.META.表信息。
  • 从.META.表查找,获取存放目标数据的HRegion信息,从而找到对应的HRegionServer。
  • 通过HRegionServer获取需要查找的数据。
  • HRegionserver的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据。读请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache。

你可能感兴趣的:(大数据,HBase)