浅谈HBase数据结构和系统架构-技术详解 (浅谈hbase)
LSM 树(LogStructuredMergeTree)是一种日志结构合并树,它是一种文件组织方式,最初出现在 1996 年 Patrick O'Neil 等人的本文中。得名于其独特的数据组织方式(日志结构)和通过不断合并(Merge)进行后台维护的方式。
LSM 树不只是一种具体的数据结构,而是一种具有顺序追加、多层数据结构和定期合并等特性的数据处理逻辑。它将离散的随机写转换为批量的顺序写,减少了磁盘寻道时间,提高了写入性能。这使其适用于写密集型应用。
在 Patrick O'Neil 的本文中,给出了多级 LSM 树的结构。内存中存在一个 C0 树,磁盘上存在 C1 到 Ck 树。Ck 树是一个有序的树状结构,数据的写入流转从内存中的 C0 树开始,不断被合并到磁盘上容量更大的 Ck 树上。
由于内存的读写速率远高于外存,因此数据写入效率很高。并且数据从内存刷入磁盘时是预排序的,也就是说,LSM 树将原本的随机写操作转换成了顺序写操作,写性能大幅提升。但是,读取时需要将内存中的数据和磁盘中的数据合并,牺牲了一部分读性能。
HBase 系统架构
HBase 基于 LSM 树模型构建了一个分布式的列数据库。它采用 Master/Slave 架构搭建集群,隶属于 Hadoop 生态系统,数据存储于 HDFS 中。
一个 RegionServer 由一个(或多个)HLog、一个 BlockCache 以及多个 Region 组成:
- HLog 用于保证数据写入的可靠性。
- BlockCache 可以将数据块缓存在内存中以提升数据读取性能。
- Region 是 HBase 中数据表的一个数据分片,一个 RegionServer 上通常会负责多个 Region 的数据读写。
一张表会被水平切分成多个 Region,每个 Region 负责自己区域的数据读写请求。一个 Region 由多个 Store 组成,每个 Store 存放对应列簇的数据。例如,如果一个表中有两个列簇,该表的所有 Region 都将包含两个 Store。
每个 Store 包含一个 MemStore 和多个 HFile。用户数据写入时,将对应列簇数据写入相应的 MemStore。一旦写入数据的内存大小超过设定阈值,系统就会将 MemStore 中的数据落盘形成 HFile 文件。HFile 存储在 HDFS 上,是一种定制化格式的数据存储文件,方便用户进行数据读取。
MemStore 实现
MemStore 是 LSM 中 C0 树的实现,它由一个可写的 Segment 以及一个或多个不可写的 Segment 构成。所有的数据写入操作按顺序先写入日志 HLog,再写入 MemStore。当 MemStore 中数据大小超过阈值后,将这些数据批量写入磁盘,生成一个新的 StoreFile(HFile)。最后,多个 StoreFile(HFile)又会进行 Compact。
- 通过 MemStoreLAB(LocalAllocator)实现内存分配器,有效降低内存分配和释放的开销。
- 使用跳链表(SkipList)实现 MemStore 中数据的有序存储,支持快速查找和插入。
- 在 MemStore 中维护一个 MVCC(多版本并发控制)机制,允许并发写入和读取,同时保证数据的读写一致性。
总结
LSM 树模型和 HBase 系统架构是理解写密集型数据库系统的重要基础。LSM 树模型提供了高效的写入性能,而 HBase 以其分布式和可扩展的特性在海量数据场景中得到了广泛应用。
Hbase与HDFS是什么关系?
HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统。
扩展资料:
![技术详解](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
Hadoop 中各模块的作用:
1、Hadoop HDFS为HBase提供了高可靠性的底层存储支持。
2、Hadoop MapReduce为HBase提供了高性能的计算能力。
3、Zookeeper为HBase提供了稳定服务和failover机制。
4、Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。
5、Sqoop则为HBase提供了方便的RDBMS(关系型数据库)数据导入功能,使得传统数据库数据向HBase中迁移变得非常方便。
系统架构 技术构架 应用构架 区别
系统架构、技术构架、应用构架区别为:目的不同、实现方式不同、特点不同。
一、目的不同
1、系统架构:系统架构是对已确定的需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务。
2、技术构架:技术构架是对整个或部分技术系统的可重用设计的构架。
3、应用构架:应用构架是描述了IT系统功能和技术实现内容的构架。
二、实现方式不同
1、系统架构:系统架构通过规划程序的运行模式、层次结构、调用关系来具体实现架构。
2、技术构架:技术构架通过一组抽象构件及构件实例间交互的方法来具体实现架构。
3、应用构架:应用构架通过架构图的方式来具体实现架构。
三、特点不同
1、系统架构:系统架构特点是确定一台计算机硬件和软件之间的衔接。
2、技术构架:技术构架特点是可被技术开发者定制的应用骨架。
3、应用构架:应用构架特点是承接了企业战略发展方向和业务模式,规划和指导企业各个IT系统的定位和功能。
网络百科——系统构架
网络百科——技术框架
网络百科——应用架构
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。