HBase LSM树存储结构

一、LSM树的由来

在了解LSM树之前,大家需要对hash表和B+树有所了解。

Hash存储方式支持增、删、改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入以及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)快,如果不需要有序的遍历数据,哈希表就是最佳选择。

B+树不仅支持单条记录的增、删、读、改操作,还支持顺序扫描(B+树的叶子节点之间的指针),对应的存储系统就是关系数据库(Mysql等)。但是删除和更新操作比较麻烦,正是基于以上结构的分析,LSM树应运而生。

LSM树(Log-Structured Merge Tree)存储引擎和B树存储引擎一样,同样支持增、删、读、改、顺序扫描操作。而且通过批量存储技术规避磁盘随机写入问题。当然凡事有利有弊,LSM树和B+树相比,LSM树牺牲了部分读性能,用来大幅提高写性能。

二、LSM的设计思想和原理

LSM树的设计思想非常简单:将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘,不过读取的时候稍微麻烦,需要合并磁盘中历史数据和内存中最近修改操作,所以写入性能大大提升,读取时可能需要先看是否命中内存,否则需要访问较多的磁盘文件。极端的说,基于LSM树实现的HBase的写性能比Mysql高了一个数量级,读性能低了一个数量级。

LSM树原理把一棵大树拆分成N棵小树,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成一棵大树,以优化读性能。

在Hbase中LSM的应用流程:

1、因为小树先写到内存中,为了防止内存数据丢失,写内存的同时需要暂时持久化到磁盘,对应了HBase的MemStore和HLog。

2、MemStore上的树达到一定大小之后,需要flush到HRegion磁盘中(一般是Hadoop DataNode),这样MemStore就变成了DataNode上的磁盘文件StoreFile,定期HRegionServer对DataNode的数据做merge操作,彻底删除无效空间,多棵小树在这个时机合并成大树,来增强读性能。

3、LSM的原理

关于LSM Tree,对于最简单的二层LSM Tree而言,内存中的数据和磁盘你中的数据merge操作,如下图

LSM树合并
2.3-LSM树合并

LSM tree,理论上,可以是内存中树的一部分和磁盘中第一层树做merge,对于磁盘中的树直接做update操作有可能会破坏物理block的连续性,但是实际应用中,一般lsm有多层,当磁盘中的小树合并成一个大树的时候,可以重新排好顺序,使得block连续,优化读性能。

Hbase在实现中,是把整个内存在一定阈值后,flush到disk中,形成一个file,这个file的存储也就是一个小的B+树,因为hbase一般是部署在hdfs上,hdfs不支持对文件的update操作,所以hbase这么整体内存flush,而不是和磁盘中的小树merge update,这个设计也就能讲通了。内存flush到磁盘上的小树,定期也会合并成一个大树。整体上hbase就是用了lsm tree的思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HBase是一个基于Hadoop的分布式、面向列的数据库。它采用了一种分布式存储架构,可以支持海量数据的存储和高并发的访问。 HBase的分布式存储架构主要由HMaster、RegionServer和ZooKeeper组成。HMaster是HBase的主控节点,负责对整个集群进行管理和协调。它负责分配RegionServer和表的负载均衡,并监控RegionServer的状态。 RegionServer是实际存储数据的节点,每个RegionServer负责一定范围的数据区域(Region)。Region按照表的列族进行分割存储,并自动进行数据的划分和迁移,以实现数据的平衡和高可用性。每个RegionServer可以同时服务多个客户端请求,并对数据进行读写操作。 ZooKeeper是分布式协调服务,它主要用于管理和监控整个HBase集群的状态、配置信息和元数据。ZooKeeper负责维护HBase集群的一致性和可用性,通过选主机制确保HMaster的高可用性,同时协调各个RegionServer之间的通信和同步。 在HBase的分布式存储架构中,数据存储在HDFS(Hadoop分布式文件系统)上,并进行分散和冗余存储,以提高系统的可靠性和容错性。HBase采用了列存储的方式,可以支持多维度的扫描和快速的随机读写操作,适用于大数据量和高并发的场景。 总结来说,HBase的分布式存储架构是基于Hadoop的、面向列的数据库系统。它通过HMaster、RegionServer和ZooKeeper等组件,实现了数据的分布式存储、负载均衡和高可用性。这种架构可以支持海量数据的存储和高并发的访问,适用于大规模数据处理和分析的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值