HBase学习

HBase学习

0x01 摘要

本文是一篇HBase学习综述,将会介绍HBase的特点、对比其他数据存储技术、、架构、存储、数据结构、使用、过滤器等。

未完成

0x02 HBase基础概念

2.1 HBase是什么

2.2 HBase相对于RDMBS能解决什么问题

2.3 HBase特点

2.4 HBase与CAP

2.5 HBase使用场景

0x03 HBase架构

HBase学习

0x04 HBase数据模型

4.1 逻辑模型

4.2 物理模型

0x05 HBase容错

0x06 HBase读写流程

6.1 Region定位流程

6.2 写流程

  1. Client先访问zookeeper,从meta表获取相应region信息,然后找到meta表的数据
  2. 根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的region信息
  3. 找到对应的regionserver
  4. 把数据分别写到HLog(一个RegionServer共用一份)和MemStore(一个Store一份)上一份
  5. MemStore达到一个阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以总HLog上恢复)
  6. 当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
  7. 当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),并由Hmaster分配到相应的HRegionServer,实现负载均衡

6.3 读流程

  1. Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。
  2. 根据namespace、表名和rowkey在meta表中找到对应的region信息
  3. 找到这个region对应的regionserver
  4. 查找对应的region
  5. 先从MemStore找数据,如果没有,再到StoreFile上读(为了读取的效率)。

0x07 HBase过滤器

0x08 HBase协处理器

0x09 HBase线程模型

0x10 HBase网络模型

0x11 HBase的使用

0x12 HBase对比其他技术

12.1 对比HDFS/MR

12.2 对比Cassandra

12.3 对比Kudu

0x13 HBase常见问题