前言

想了解HBase存储原理,最直观的方式是先了解它使用的存储思想,然后通过类比法,即可秒懂HBase为什么要这么设计了。所以再学习HBase如何实现存取的时候,最好先理解LSM树存储思想。

研究一种框架的心法

不要被所谓的XX思想所吓倒或者觉得他没什么作用,一般来说,XX思想都是非常简洁漂亮的,也是非常容易理解的。学习新知识最好要先掌握其大致思想,不要急于研究细节,因为"魔鬼都在细节当中"。掌握了思想脉络以后,就像有了张通关地图,然后再深入细节斩妖除魔。

一.什么是LSM存储思想

(LSM树结构图)

LSM树存储数据流程

LSM树,即日志结构合并树(Log-Structured Merge-Tree)。

1.数据先存储到内存C0中,这样可保证数据存储快。
2.当达到一定阈值后(内存宝贵),则开始转存到C1(硬盘)上。对数据持久化保存,防止数据丢失。
3.将许多的C1小文件进行合并,方便管理。

二.HBase中如何使用LSM树存储思想

存储数据过程解释:

1.用户数据到大RegionServer,先保存到memStore(内存,保证速度快)和log(日志,防止内存中数据丢失,保证HV)中。
2.内存中的数据达到一定的阈值,将数据保存到硬盘上(StoreFile)。
3.将硬盘上的数据文件合并成一个大文件。

数据写入HBase流程:

用户数据进入Region后,先会进入MemStore;数据在MemStore中达到一定阈值以后会写到StoreFile,StoreFile再将数据封装成HFile,然后再将HFile写到HDFS中。

LSM在HBase中的实现:

第一级:Hlog+MEMStore,保证了高速写入,降低延迟。
第二级:StoreFile + HFile,保证了不可靠数据的持久化(将内存数据保存在硬盘上)。

总结:

正如开头提到的,LSM树存储思想其实很简单,在HBase中体现在:将数据先存储到内存,达到一定量后,将其写入硬盘日志中,然后伺机将多个日志文件合并在一起。这就是日志结构合并(LSM)的存储思想了。

关于Hbase的其他内容,后续也将更新,喜欢就点个赞和关注吧。

HBase是如何应用LSM树存储思想的相关推荐

  1. hbase 中的LSM树存储引擎

    LSM的原理:将对数据的修改增量保存在内存中,达到指定大小限制之后批量把数据flush到磁盘中,磁盘中树定期可以做merge操作,合并成一棵大树,以优化读性能.不过读取的时候稍微麻烦一些,读取时看这些 ...

  2. LSM树——Log-Structured Merge-Tree数据结构、LSM树设计思想、LSM的数据写入操作、LSM的数据查询操作

    LSM树数据结构 简介 传统关系型数据库,一般都选择使用B+树作为索引结构,而在大数据场景下,HBase.Kudu这些存储引擎选择的是LSM树.LSM树,即日志结构合并树(Log-Structured ...

  3. B树、B+树、LSM树以及其典型应用场景

    前言 动态查找树主要有:二叉查找树.平衡二叉树.红黑树.B树.B+树.前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率.这时就提出了 ...

  4. mysql中lsm树_LSM树理解

    对比三种引擎的实现: hash存储引擎:哈希表持久化的实现,可以快速支持增删改查等随机操作,且时间复杂度为o(1),但是不支持顺序读取扫描,对应的存储系统为k-v存储系统的实现. b树存储引擎是b树的 ...

  5. LSM树数据结构介绍

    LSM树详情介绍 LSM树(Log-Structured-Merge-Tree)的名字往往会给初识者一个错误的印象,事实上,LSM树并不像B+树.红黑树一样是一颗严格的树状数据结构,它其实是一种存储结 ...

  6. LSM树(日志结构合并树)总结-java版

    目录 为什么要有LSM树 数据库存储引擎索引的底层结构 BTree的随机写特点 LSM树的诞生背景 简介 LSM树与B树的差异 LSM树优化 LSM树基本原理 LevelDB中的LSM HBase中的 ...

  7. 数据结构(四)、LSM树(日志结构合并树)

    传统关系型数据库大都使用B-Tree或其变体作为存储结构,能够进行高效查找.但保存在磁盘中时它也有一个明显的缺陷,那就是逻辑上相离很近但物理却可能相隔很远,这就可能造成大量的磁盘随机读写.因此对于关系 ...

  8. 面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

    摘要:Hash索引有两个明显的限制:(1)当key的数量很多时,维护Hash索引会给内存带来很大的压力:(2)区间查询很低效.如何对这两个限制进行优化呢?这就轮到本文介绍的主角,LSM树,出场了. 我 ...

  9. LSM树(Log-Structured Merge Tree)存储引擎

    LSM树(Log-Structured Merge Tree)存储引擎 代表数据库:nessDB.leveldb.hbase等 核心思想的核心就是放弃部分读能力,换取写入的最大化能力.LSM Tree ...

最新文章

  1. workerman结合laravel开发在线聊天应用的示例代码
  2. Oralce null
  3. 第七周实践项目2.3 顺序环形队列
  4. 原来小清新色调是这样调出来的~
  5. 集群IPtables转发与防火墙
  6. python frombuffer_numpy.getbuffer和numpy.frombu
  7. MATLAB中移动平均滤波器smooth函数的用法
  8. 拉普拉斯变换公式表_复变函数之拉普拉斯变换小结
  9. MFC中onmouseover与onmousemove的区别
  10. python 实时取色器3.0(升级版)【内附源码】
  11. 麦腾股份正式挂牌新三板,创业孵化市场或将深度洗牌
  12. python入门基础三之流程控制
  13. 微信自定义分享操作步骤
  14. 【满分】【华为OD机试真题2023 JAVAJS】查找充电设备组合
  15. perforce(p4) 使用
  16. How to deal with Imbalanced Datasets in PyTorch - Weighted Random Sampler Tutorial
  17. PICT测试工具的安装及使用
  18. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
  19. C语言 输入一个华氏温度F,要求输出摄氏度C。
  20. 如何保障测试用例的覆盖率

热门文章

  1. AJAX与后端联调问题
  2. python队列实例
  3. Debian10(xfce4)Linux换源中文输入法sudo等常用软件安装配置
  4. Linux 常用命令 运维 一把梭
  5. 【C++演示】编程语言的true、false和1、0之间的相互转化
  6. React项目报错: __WEBPACK_IMPORTED_MODULE_3_react___default.a.memo is not a function
  7. 电脑经常蓝屏是什么原因 各种蓝屏代码解决方法
  8. 一张图片放两个二维码_这6个宝藏网站,为你提供用不完的免费素材图片!
  9. python saltstack_python3 saltstack api 接入
  10. tomcat 下jsp乱码的原因分析