完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
前言
HBase 是一个分布式的、多版本、面向列的开源 KV 数据库。运行在 HDFS 的基础上,支持 PB 级别、百万列的数据存储。作为性能如此强大的 KV 数据库,HBase的存储结构究竟是怎样的呢?面向列的存储结构究竟有什么样的不同之处呢?接下来会详细讲解这部分。 HBase的存储结构 为了清晰地表述这个,我们把HBase的存储结构分为逻辑结构和物理结构两个部分。 逻辑存储结构 通过下图直观地展示 HBase 的逻辑存储结构: 在本图中,列簇(Column Family)对应的值就是 info 和 area ,列( Column 或者称为 Qualifier )对应的就是 name 、 age 、 country 和 city ,Row key 对应的就是 Row 1 和 Row 2,Cell 对应的就是具体的值。 Row key :表的主键,按照字典序排序。 列簇:在 HBase 中,列簇将表进行横向切割。 列:属于某一个列簇,在 HBase 中可以进行动态的添加。 Cell : 是指具体的 Value 。 Version :在这张图里面没有显示出来,这个是指版本号,用时间戳(TimeStamp )来表示。 看完这张图,是不是有点疑惑,怎么获取其中的一条数据呢?既然 HBase 是 KV 的数据库,那么当然是以获取 KEY 的形式来获取到 Value 啦。在 HBase 中的 KEY 组成是这样的: KEY 的组成是以 Row key 、CF(Column Family) 、Column 和 TimeStamp 组成的。 TimeStamp 在 HBase 中充当的作用就是版本号,因为在 HBase 中有着数据多版本的特性,所以同一个 KEY 可以有多个版本的 Value 值(可以通过配置来设置多少个版本)。查询的话是默认取回最新版本的那条数据,但是也可以进行查询多个版本号的数据,在接下来的进阶操作文章中会有演示。 Region Server 和 Region 的关系 一个 Region Server 就是一个机器节点(服务器) 一个 Region Server 包含着多个 Region 一个 Region 包含着多个列簇 (CF) 一个 Region Server 中可以有多张 Table,一张 Table 可以有多个 Region 物理存储结构 先来看这张图: 为了不混淆,我们可以先把以下的概念一一对应起来 逻辑结构物理结构Region ServerHRegion ServerRegionHRegionCFHStore(这里指的是Store) 在具体的物理结构中 HRegion Server 就是一个机器节点,包含多个 HRegion ,但是这些 HRegion 不一定是来自于同一个 Table ,负责响应的是用户的 IO 请求,和 HDFS 进行交互,是服务器中的一个进程。 HRegion 包含多个 HStore 。 一个 CF 组成一个 HStore ,默认是 10 G,如果大于 10G 会进行分裂。HStore 是 HBase 的核心存储单元,一个 HStore 由 MemStore 和 StoreFile 组成。 MemStore 是一块内存,默认大小是 128M,如果超过了这个大小,那么就会进行刷盘,把内存里的数据刷进到 StoreFile 中。 在 HStore 对应着的是 Table 里面的 Column Family,不管有 CF 中有多少的数据,都会存储在 HStore 中,为了避免访问不同的 HStore 而导致的效率低下。 HRegion 是 Hbase 中分布式存储和负载均衡的最小单元,但不是存储的最小单元。 一个 Hstore 可以有多个 StoreFile 在HBase中查找不同的CF的数据 从不同的 CF 中查询 Row 3 主键的数据,结果集如下: 更加直观地显示,在 HBase 中是以 CF 为单元的存储结构。 HBase的架构 如下图,HBase 的架构图,在 HBase 中我们看到有 Client、Zookeeper、HMaster 和 HRegion。 Client 是客户端,要求读写数据的发起者。 ZK 集群是负责转发 Client 的请求和提供心跳机制,会让 HRegion Server 和 HRegion 注册进来,同时保存着 Rowkey 和 Region 的映射关系。 HMaster 中可以有多个待命,只有一个在活跃。 Hbase读取数据的过程 Client 请求读取数据时,先转发到 ZK 集群,在 ZK 集群中寻找到相对应的 Region Server,再找到对应的 Region,先是查 MemStore,如果在 MemStore 中获取到数据,那么就会直接返回,否则就是再由 Region 找到对应的 Store File,从而查到具体的数据。 在整个架构中,HMaster 和 HRegion Server 可以是同一个节点上,可以有多个 HMaster 存在,但是只有一个 HMaster 在活跃。 在 Client 端会进行 rowkey-》 HRegion 映射关系的缓存,降低下次寻址的压力。 HBase 写入数据的过程 先是 Client 进行发起数据的插入请求,如果 Client 本身存储了关于 Rowkey 和 Region 的映射关系的话,那么就会先查找到具体的对应关系,如果没有的话,就会在ZK中进行查找到对应 Region server,然后再转发到具体的 Region 上。所有的数据在写入的时候先是记录在 WAL 中,同时检查关于 MemStore 是否满了,如果是满了,那么就会进行刷盘,输出到一个 Hfile 中,如果没有满的话,那么就是先写进 Memstore 中,然后再刷到 WAL 中。 |
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3257 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3903 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3411 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
3964 浏览 1 评论
20603 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
737浏览 2评论
923浏览 2评论
953浏览 1评论
1078浏览 1评论
359浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:53 , Processed in 0.914632 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号