hbase shell查询表中某字段不为空的数据量_HBase工作原理

本文详细介绍了HBase的工作原理,包括物理存储结构如hregion、Store、memStore、Storefile和HLog,以及读写流程。强调了HBase如何通过内存和HFile的管理实现快速写入,并通过LSM树优化读取性能。同时,文章讨论了HBase的系统架构,包括Client、Zookeeper、Master和RegionServer的角色,以及HBase与关系型数据库、Hive的对比。此外,还探讨了HBase表设计中的列族和行键设计原则。
摘要由CSDN通过智能技术生成

HBASE原理

一、原理

1、物理存储

1.hregion

hbase表中的数据按照行键的字典顺序排序,hbase表中的数据按照行的的方向切分为多个region。

最开始只有一个region随着数据量的增加,产生分裂,这个过程不停的进行。一个表可能对应一个或多个region。

region是hbase表分布式存储和负载均衡的基本单元,一个表的多个region可能分布在多台HRegionServer上。

2.Store

region是分布式存储的基本单元,但不是存储的基本单元,其内部还具有结构。一个region由多个Store来组成。

有几个store取决于表的列族的数量,一个列族对应一个store。之所以这么设计,是因为一个列族中的数据往往数据很类似,方便进行压缩,节省存储空间。

3.memStore

表的一个列族对应一个store,store的数量由表中列族的数量来决定。一个store由一个memstore和零个或多个storefile组成。

memStore负责保存内存中的数据。

4.Storefile

storefile其实就是hdfs中的hfile只能写入不能修改,所以hbase写入数据到hdfs的过程其实是不断追加hfile的过程。

hfile的结构:

2f1708e923bdbefd499fc2c26b1f0bd7.png

HFile分为六个部分:

Data Block段–保存表中的数据,这部分可以被压缩

Meta Block 段(可选的)–保存用户自定义的kv对,可以被压缩。

File Info段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。

Data Block Index段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。

Meta Block Index段(可选的)–Meta Block的索引。

Trailer–这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先 读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰。

HFile的Data Block,Meta Block通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。

目标Hfile的压缩支持两种方式:Gzip,Lzo。

5.HLog(WAL log)

WAL意为Write ahead log(http://en.wikipedia.org/wiki/Write-ahead_logging),类似mysql中的binlog,用来做灾难恢复之用,Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值