Hbase 原理浅析

Posted 分享录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase 原理浅析相关的知识,希望对你有一定的参考价值。

1 Hbase 数据模型

 Namespace(表命名空间):类似关系数据库的实例,默认为default。

Table(表):一个表由一个或者多个列族组成。

Row(行):一个行包含了多个列,这些列通过列族来分类。一个Region就是多个行的集合。每一个行都有一个类似主键的rowkey,rowkey在HBase中是严格按照字典排序的。

Column Family(列族):列族是多个列的集合。

Column Qualifier(列):多个列组成一个行。

Cell(单元格):一个列中可以存储多个版本的数据。而每个版 本就称为一个单元格(Cell)。(rowkey:column family:column:version)

Timestamp(时间戳/版本号):是时间戳,也可以称为是版本号,因为它是用来标定同一个列中多个单元格的 版本号的。

HBase部分支持了ACID(Atomicity(原子性)、Consistency(一致性)、 Isolation(隔离性)、Durability(持久性))。

2 Hbase 架构

Hbase 原理浅析

Master:负责启动的时候分配Region到具体的RegionServer,执行各种管理操作,比如Region的分割和合并。

RegionServer:就是存放Region的容器,负责数据获取、插入、删除等操作(调用了HDFS的客户端接口来实现)。

Region:表的一部分数据(类似关系型数据库中分区表的一个分区)。

HDFS:分布式文件存储系统,HBase并不直接跟服务器的硬盘交互,而是跟HDFS交互。

ZooKeeper:hbase元数据存储在ZooKeeper上。

2.1 RegionServer

Hbase 原理浅析

一个 RegionServer 包含有: 一个 WAL 和 多个 Region 。

2.2 WAL 

预写日志(Write-ahead log,WAL):就是设计来解决宕机之后的操作恢复问题的。数据到达Region的时候是先写入WAL,然后再被加载到 Memstore的。

WAL是存储在HDFS上的。

2.3 Region

Hbase 原理浅析

 一个 Region 包含有:多个Store。

2.4 Store

Hbase 原理浅析

 一个 Store 包含有:一个 MemStore 和多个 HFile。

2.5 MemStore

每个Store中有一个MemStore实例。数据写入WAL之后就会被放入MemStore。MemStore是内存的存储对象,只有当MemStore满了的时候才会将数据刷写(flush)到HFile中。

Memstore是存储在内存中的。

Memstore存在的意义是维持数据按照rowkey顺序排列,而不是做一个缓存。

2.6 HFile

Hbase 原理浅析

当 MemStore 满了之后 HBase 就会在 HDFS 上生成一个新的 HFile,然后把 MemStore 中的内容写到这个HFile中。

HFile 直接跟HDFS打交道,它是数据的存储实体。

一个 HFile 包含有(在HBase中一个块的 大小默认为64KB):多个块。

  • Data:数据块,每个HFile有多个Data块。

  • Meta:元数据块,是可选的。

  • FileInfo:文件信息,是必选的。

  • DataIndex:存储Data块索引信息的块文件,是可选的。

  • MetaIndex:存储Meta块索引信息的块文件,是可选的。

  • Trailer:存储了FileInfo、DataIndex、MetaIndex 块的偏移值,是必选的。

2.7 Data Block

Hbase 原理浅析

 一个 Data Block 包含有:一个 BlockType 和多个 Cell。

2.8 Cell

Hbase 原理浅析

单元格(Cell):KeyValue键值对。

key值:存储 rowkey、column family、 column等的元数据。

3 Region 二层查询结构

Hbase 原理浅析

4 KeyValue 读写流程

4.1 数据写入

Hbase 原理浅析

数据写入步骤:

  1. 数据被发出之后第一时间被写入WAL。

  2. 数据随后会立即被放入Memstore中进行整理(序列化)。

  3. 最后,当Memstore太大了达到尺寸上的阀值,或者达到了刷写时间间隔阀值的时候,HBaes会被这个Memstore的内容刷写到HFile文件。

4.2 数据读取

Hbase 原理浅析

读取数据步骤:

  1. 在Scan扫描的时候store会创建StoreScanner实例。

  2. StoreScanner 会把MemStore和HFile结合起来扫描。

  3. 当StoreScanner打开的时候,会先定位到起始行键(STARTROW)上,然后开始往下扫描。

  4. Scan要把所有符合条件的StoreScanner都扫描过一遍之后才会返回数据给用户。

------------END-----------

更多原创文章请扫描上面(微信内长按可识别)二维码访问我的个人网站(https://www.xubingtao.cn),或者打开我的微信小程序:可以评论以及在线客服反馈问题,其他平台小程序和APP请访问:https://www.xubingtao.cn/?p=1675。祝大家生活愉快!

以上是关于Hbase 原理浅析的主要内容,如果未能解决你的问题,请参考以下文章

vue的双向绑定原理浅析与简单实现

GPS定位基本原理浅析转

springboot自动配置原理 浅析

ngrok原理浅析(转载)

axios和ajax及fetch原理浅析

HBase万字详细原理解析