Hbase 原理浅析
Posted 分享录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 架构
Master:负责启动的时候分配Region到具体的RegionServer,执行各种管理操作,比如Region的分割和合并。
RegionServer:就是存放Region的容器,负责数据获取、插入、删除等操作(调用了HDFS的客户端接口来实现)。
Region:表的一部分数据(类似关系型数据库中分区表的一个分区)。
HDFS:分布式文件存储系统,HBase并不直接跟服务器的硬盘交互,而是跟HDFS交互。
ZooKeeper:hbase元数据存储在ZooKeeper上。
2.1 RegionServer
一个 RegionServer 包含有: 一个 WAL 和 多个 Region 。
2.2 WAL
预写日志(Write-ahead log,WAL):就是设计来解决宕机之后的操作恢复问题的。数据到达Region的时候是先写入WAL,然后再被加载到 Memstore的。
WAL是存储在HDFS上的。
2.3 Region
一个 Region 包含有:多个Store。
2.4 Store
一个 Store 包含有:一个 MemStore 和多个 HFile。
2.5 MemStore
每个Store中有一个MemStore实例。数据写入WAL之后就会被放入MemStore。MemStore是内存的存储对象,只有当MemStore满了的时候才会将数据刷写(flush)到HFile中。
Memstore是存储在内存中的。
Memstore存在的意义是维持数据按照rowkey顺序排列,而不是做一个缓存。
2.6 HFile
当 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
一个 Data Block 包含有:一个 BlockType 和多个 Cell。
2.8 Cell
单元格(Cell):KeyValue键值对。
key值:存储 rowkey、column family、 column等的元数据。
3 Region 二层查询结构
4 KeyValue 读写流程
4.1 数据写入
数据写入步骤:
数据被发出之后第一时间被写入WAL。
数据随后会立即被放入Memstore中进行整理(序列化)。
最后,当Memstore太大了达到尺寸上的阀值,或者达到了刷写时间间隔阀值的时候,HBaes会被这个Memstore的内容刷写到HFile文件。
4.2 数据读取
读取数据步骤:
在Scan扫描的时候store会创建StoreScanner实例。
StoreScanner 会把MemStore和HFile结合起来扫描。
当StoreScanner打开的时候,会先定位到起始行键(STARTROW)上,然后开始往下扫描。
Scan要把所有符合条件的StoreScanner都扫描过一遍之后才会返回数据给用户。
------------END-----------
更多原创文章请扫描上面(微信内长按可识别)二维码访问我的个人网站(https://www.xubingtao.cn),或者打开我的微信小程序:可以评论以及在线客服反馈问题,其他平台小程序和APP请访问:https://www.xubingtao.cn/?p=1675。祝大家生活愉快!
以上是关于Hbase 原理浅析的主要内容,如果未能解决你的问题,请参考以下文章