HBase的读写流程

HBase的写流程

HBase的读写流程_第1张图片

  • Client访问zookeeper获取指定的RegionServer的地址(缓存meta表)
  • Client向RegionServer发起写请求,RegionServer接收数据写入内存
  • 当MemStore大小达到一定值时会将数据flush到StoreFile文件并且存储在HDFS上

HBase的读写流程_第2张图片

  • RegionServer管理着多个Region,每个Region对应着一个HLog实例
  • Region是HBase的基本存储单元,每一个Region只存储一个列族的部分数据(数据量大切分后会切分成多个Region)
  • 每一个Region包含多个Store对象,每个Store对象包含一个MemStore和多个StoreFile
  • StoreFile是Hfile的一个封装
  • HLog是一种与写日志,数据先写入MemStore再写入HLog,只有在HLog中写入成功才算写入成功,如果MemStore中数据丢失可以从HLog中找回

HBase的读流程

HBase的读写流程_第3张图片

  • Client访问zookeeper获取对应的RegionServer的地址(缓存meta表)
  • Client向RegionServer发起读请求
  • RegionServer首先扫描自己的MemStore,如果没有扫描BlockCache(加速读内容缓存区),如果没有读取StoreFile,然后将数据返回给Client

HBase集群启动时发生了什么

  • HMaster启动,注册到Zookeeper,等待RegionServer汇报
  • RegionServer注册到Zookeeper,向HMaster汇报
  • 对各个RegionServer(包括失效的)的数据进行整理,分配Region和meta表信息
  • HMaster将meta表传递给Zookeeper后就休息了,然后Zookeeper会定期的向HMaster活节点获取meta表

RegionServer失效后发生了什么

  • HMaster将失效RegionServer上的Region分配到其他节点
  • HMaster更新meta表以保证数据正常访问

HMaster失效后发生了什么

  • 处于Backup状态的其他HMaster节点推选新的Active状态HMaster(当失效HMaster恢复后为Backup状态,只有等Active状态的HMaster失效后才能重新的参与推选)
  • 没有配置高可用时,Zookeeper和RegionServer会正常的执行读写操作,但如果Clinet执行创建删除表等更改表结构的操作,Zookeeper会抛出异常(不能对meta表进行更新)

你可能感兴趣的:(#,Hadoop)