Hbase工作原理

Hbase:HBase 底层原理详解(深度好文,建议收藏) - 腾讯云开发者社区-腾讯云

Hbase架构图

同一个列族如果有多个store,那么这些store在不同的region

Hbase写流程(读比写慢)

MemStore Flush

Hbase读流程:

先读block Cache,若命中了结果,则不读磁盘;若没有命中结果,那么同时读MemStore(内存)和StoreFile(磁盘),将从磁盘读取的结果放到内存(Block Cache)中,然后和从MemStore读取结果进行merge(比较时间戳返回最新数据)

Compact操作:

该操作非常消耗资源,一般关闭该操作的自动执行。有需要的话,手动执行。

数据真正的删除时机:

Flush时会删数据,合并文件时会删除数据。

        HBase 不直接操作文件,而是通过 HDFS(Hadoop Distributed File System)进行数据存储。因此,HBase 中的数据删除并不涉及直接删除底层文件。相反,HBase 通过维护一系列称为“HFile”的底层数据文件来管理数据。

        当执行删除操作时,HBase 实际上是将删除标记(Tombstone)写入相应的 HFile 中。这个删除标记会告诉 HBase 在查询时跳过这些被标记为删除的数据。随着时间的推移,HBase 会定期进行合并(compaction)操作,将多个 HFile 合并为更大的文件,并在此过程中清理掉已经被标记为删除的数据块。

        由于合并操作是由 HBase 自动触发和处理的,因此具体删除标记从被写入到实际清理的时间会有一定的延迟。这个延迟取决于多个因素,包括表的负载、合并策略以及系统配置等。

        总之,HBase 中删除数据的时间可以说是异步的,并且受到 HBase 的自动合并和清理机制的影响。根据具体的情况,可以通过调整 HBase 的合并策略和配置参数来控制删除操作对存储空间的影响和清理速度。

Split操作:

split时机:

HBase 的拆分(split)是根据一定的策略和条件自动触发和执行的。以下是一些常见的 HBase 拆分时机:

  1. Region 大小超过设定的阈值:HBase 监测每个 Region 的大小,并在某个 Region 的大小超过预设的阈值(称为 split size)时触发拆分。这个阈值可以通过配置参数进行设置,通常以字节数或行数来表示。

  2. 基于 Region 数量的拆分:当集群中的 Region 数量达到了预设的最大 Region 数量时,HBase 可能会触发拆分操作。这是一种基于负载均衡的策略,确保数据在不同的 RegionServer 上更加均匀地分布。

  3. 定期拆分:HBase 还可以按照一定的时间间隔或频率定期执行拆分操作。这样可以避免 Region 过大导致查询性能下降,同时也有助于数据的均衡分布。

  4. 手动触发拆分:除了自动触发,HBase 还支持手动触发拆分操作。管理员可以通过 HBase Shell 或 API 来手动指定需要拆分的 Region,以满足特定的需求。

需要注意的是,拆分操作是一个比较昂贵的操作,可能会对系统产生一些开销。因此,拆分的时机需要谨慎选择,避免过于频繁或不必要的拆分操作。可以通过定期监测和调整配置参数来优化拆分策略,以适应具体的业务需求和系统负载情况。

Split流程:

在 HBase 中,split(拆分)是指将一个大的 Region 拆分成多个较小的子 Region 的过程。这个过程是自动进行的,由 HBase 系统根据一定的策略和条件触发和执行的。

下面是 HBase 的拆分流程概述:

  1. 监测 Region 大小:HBase 运行时会监测每个 Region 的大小。当一个 Region 的大小超过了预设的阈值(称为 split size),就会被标记为需要拆分。

  2. 触发拆分:一旦有一个或多个需要拆分的 Region 被标记,HMaster(HBase 的主节点)会收到这些拆分请求,并决定如何进行拆分操作。

  3. 拆分策略:HBase 提供了两种拆分策略:按行键范围拆分和按 Region 数量拆分。

    • 按行键范围拆分:HBase 将会根据 Region 当前的行键范围,计算出新的行键范围并生成新的子 Region。

    • 按 Region 数量拆分:HBase 将会根据当前 Region 的数量和预设的最大 Region 数量,将一个大的 Region 均匀地拆分成多个子 Region。

  4. 创建新的子 Region:根据选定的拆分策略,HBase 会创建新的子 Region,并将其分配给适当的 RegionServer 进行处理。

  5. 数据拷贝:新的子 Region 在创建后会开始从父 Region 拷贝数据。这个过程可能需要一些时间,具体取决于数据量和系统的负载情况。

  6. 更新元数据:拆分完成后,HBase 会更新相应的元数据(例如 .META. 表)以反映新的子 Region 的信息和位置。

整个拆分流程是自动进行的,并且由 HBase 系统根据配置和内部算法来管理和执行。拆分操作可以使数据在集群中更均衡地分布,提高系统的性能和可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级python简单应用题刷题笔记(一)

计算机二级python简单应用题刷题笔记(一) 1、词频统计:键盘输入一组我国高校所对应的学校类型,以空格分隔,共一行。2、找最大值、最小值、平均分:键盘输入小明学习的课程名称及考分等信息,信息间…

Python运算符、函数与模块和程序控制结构

给我家憨憨写的python教程 ——雁丘 Python运算符、函数与模块和程序控制结构 关于本专栏一 运算符1.1 位运算符1.1.1 按位取反1.1.2 按位与1.1.3 按位或1.1.4 按位异或1.1.5 左移位 1.2 关系运算符1.3 运算顺序1.4 运算方向 二 函数与模块2.1 内建函数2.2 库函数2.2.1 标准库…

css 预处理器的相关使用

css 预处理器的相关使用 sass 预处理器相关语法及使用技巧 1. 变量 定义变量:$变量: 属性值; 的方式定义变量 使用变量:$变量 $bone_fish_color: #dcdfe6;/* 使用 */ color: $bone_fish_color;2. 继承 extend 使用场景: 继承另一个选择器的代码. 使用方…

关于远程工作的面试可能存在的陷阱

附上看到的完整帖子地址:面试 POPER 的后端开发工程师的离奇经历 分享一下我遇到过的,我至少面试过10个远程工作,其中有3个的面试是直接让我完成一个需求的,前两次都耐心做了,第3次看到相同要求时我都懒得回复了&…

【pytest】 pytest拓展功能 PermissionError问题

目录 1. pytest-html 1.1 PermissionError: [Errno 13] Permission denied: D:\\software\\python3\\anconda3\\Lib\\site-packages\\pytest_html\\__pycache__\\tmp_ttoasov 1.2错误原因 2. 失败用例重试 3. 用例并行执行 pytest-parallel 1. pytest-html 管理员打开 A…

「聊设计模式」之建造者模式(Builder)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是众多优秀软件开发实践的总结和提炼,…

【Vue】el 和 data短小精湛的细节!

hello,我是小索奇,精心制作的Vue教程持续更新哈,花费了大量的时间和精力,总结拓展了很多疑难点,想要学习&巩固&避坑就一起学习叭~ el 与 data 的两种写法 el共有2种写法 el表达式主要用来在模板中展示数据,它…

前端VUE---JS实现数据的模糊搜索

实现背景 因为后端实现人员列表返回&#xff0c;每次返回的数据量在100以内&#xff0c;要求前端自己进行模糊搜索 页面实现 因为是实时更新数据的&#xff0c;就不需要搜索和重置按钮了 代码 HTML <el-dialogtitle"团队人员详情":visible.sync"centerDi…

音频领域的50个关键词

音频领域的50个关键词 前言50个关键词 label: 音频领域&#xff0c;关键词&#xff0c;领域黑话 持续更新中&#xff0c;评论点赞收藏能加快更新的速度…… 前言 本文小结音频领域中高频出现的关键词&#xff0c;便于初入此道的同学有个初略概念。有了这个黑话词典或者研究地图…

C#通过重写Panel改变边框颜色与宽度的方法

在C#中,Panel控件是一个容器控件,用于在窗体或用户控件中创建一个可用于容纳其他控件的面板。Panel提供了一种将相关控件组合在一起并进行布局的方式。以下是Panel控件的详细使用方法: 在窗体上放置 Panel 控件: 在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一…

WebGL 视图矩阵、模型视图矩阵

目录 立方体由三角形构成 视点和视线 视点、观察目标点和上方向 视点&#xff1a; 观察目标点&#xff1a; 上方向&#xff1a; 在WebGL中&#xff0c;观察者的默认状态应该是这样的&#xff1a; 视图矩阵程序&#xff08;LookAtTriangles.js&#xff09; 实际上&…

Leetcode.146 LRU 缓存

题目链接 Leetcode.146 LRU 缓存 mid 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 c a p a c i t y capacity capacity 初始化 LRU 缓存int get(int key) 如果关键…

Matlab论文插图绘制模板第114期—带图形标记的图

之前的文章中&#xff0c;分享了Matlab带线标记的图&#xff1a; 带阴影标记的图&#xff1a; 带箭头标记的图&#xff1a; 进一步&#xff0c;分享一下带图形标记的图&#xff0c;先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&…

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单AdaptiveTextSelectionToolba样式UI效果

flutter开发实战-自定义长按TextField输入框剪切、复制、选择全部菜单样式UI效果 在开发过程中&#xff0c;需要长按TextField输入框cut、copy设置为中文“复制、粘贴”&#xff0c;我首先查看了TextField中的源码&#xff0c;看到了ToolbarOptions、AdaptiveTextSelectionToo…

深度学习中安装了包但是依然导入(import)失败这一问题,例如pytorch环境下已经安装了scikit-learn但是import不了

在跑深度学习模型的时候我们要先搭建pytorch环境&#xff0c;这个环境跟windows环境是不同的&#xff0c;我们默认在windows中安装的包在当前的虚拟环境中读取不到&#xff0c;所以导致我们明明安装了包但是依然在实际的导入中(import)报错。解决办法就是我们去虚拟环境中安装包…

linux驱动开发day6--(epoll实现IO多路复用、信号驱动IO、设备树以及节点和属性解析相关API使用)

一、IO多路复用--epoll实现 1.核心&#xff1a; 红黑树、一张表以及三个接口、 2.实现过程及API 1&#xff09;创建epoll句柄/创建红黑树根节点 int epfdepoll_create(int size--无意义&#xff0c;>0即可)----------成功&#xff1a;返回根节点对应文件描述符&#xff…

ubuntu:vi 编辑器修改文件的基本操作指令

Vi 编辑器是一个强大的命令行文本编辑器&#xff0c;它有着丰富的功能&#xff0c;但也可能对新用户来说有一些陡峭的学习曲线。下面是一些 Vi 编辑器中的基本操作指令&#xff1a; 1.打开文件 打开 Vi 并打开文件的命令是&#xff1a; vi filename其中 filename 是你要编辑…

构建无缝的服务网格体验:分享在生产环境中构建和管理服务网格的最佳实践

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

笙默考试管理系统-MyExamTest----codemirror(21)

笙默考试管理系统-MyExamTest----codemirror&#xff08;21&#xff09; 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试…

linux安装配置 kafka并简单使用

目录 一 解压安装包 二 修改配置 三 启动kafka 四 简单使用 kafka 一 解压安装包 这里提供了网盘资源 链接: https://pan.baidu.com/s/1wUxEQuiPB1wRsjJ-FPPu7Q?pwd9rm7 提取码: 9rm7 这里安装包上传至/opt/insatll目录 解压至/opt/soft目录 tar -zxf /opt/install/ka…