HBase入门:运行机制

文章目录

  • HBase 系统架构
    • 客户端
    • ZooKeeper 服务器
    • Master 主服务器
    • Region 服务器
  • Region 服务器工作原理
    • 用户读写数据的过程
    • 缓存的刷新
    • StoreFile合并
  • Store 的工作原理
  • HLog 的工作原理

HBase 系统架构

  • HBase 的系统架构包括客户端、ZooKeeper 服务器、Master 主服务器、Region服务器
  • HBase 一般采用 HDFS 作为底层数据存储系统
    在这里插入图片描述

客户端

  • 客户端包含访问 HBase 的接口,同时在缓存中维护着已经访问过的 Region 位置信息,用来加快后续数据访问过程。HBase 客户端使用 HBase 的 RPC 机制与 Master 和 Region 服务器进行通信。
  • 对于管理类操作,客户端与 Master 进行 RPC;而对于数据读写类操作,客户端会与Region 服务器进行 RPC。

ZooKeeper 服务器

  • HBase 服务器集群包含一个 Master 主服务器和多个 Region 服务器。Master是HBase 集群的“总管”,它必须知道 Region 服务器的状态。ZooKeeper 服务器就可以轻松做到这一点,每个 Region 服务器都需要到 ZooKeeper 服务器中进行注册,ZooKeeper 服务器会实时监控每个 Region 服务器的状态并通知 Master 主服务器,这样,Master 主服务器就可以通过 ZooKeeper服务器随时感知到各个 Region 服务器的工作状态。
  • ZooKeeper 服务器并非一台单一的机器,可能是由多台机器构成的集群来提供稳定可靠的协同服务。ZooKeeper 服务器能够很容易地实现集群管理的功能,如果有多台服务器组成一个服务器集群,那么必须有一个Master知道当前集群中每台机器的服务状态,一旦某台机器不能提供服务,集群中其他机器必须知道,从而做出调整、重新分配服务策略。同样,当增加一台或多台服务器,也必须让Master知道。
  • ZooKeeper 服务器不仅能够帮助维护当前的集群中机器的服务状态,而且能够帮助选出一个“总管”,让总管来管理集群。HBase 中可以启动多个 Master,但是 ZooKeeper 服务器可以帮助选举出一个 Master 主服务器作为集群的总管,并保证在任何时刻总有唯一一个 Master 主服务器在运行,避免 Master 主服务器的“单点失效”问题。
  • ZooKeeper 服务器中保存-ROOT-表的地址和 Master 主服务器的地址,客户端可以通过访问ZooKeeper 服务器获得-ROOT-表的地址,并最终通过“三级寻址”找到所需的数据。ZooKeeper服务器中还存储 HBase的模式,包括 Hbase的表,每个表的列族。

Master 主服务器

Master 主服务器主要负责表和 Region 的管理工作。

  • 管理用户对表的增加、删除、修改、查询
  • 实现不同 Region 服务器之间的负载均衡
  • 在 Region 分裂或合并后,负责重新调整 Region 的分布
  • 对发生故障失效的 Region服务器上的Region 进行迁移

  • 客户端访问 HBase 上数据的过程不需要 Master 主服务器的参与,客户端访问ZooKeeper 服务器获取-ROOT-表的地址,并最终到相应的 Region 服务器进行数据读写,Master主服务器仅维护着表和 Region 的元数据信息,因此负载很低。

  • 一个 Region 只能分配给一个 Region 服务器。Master 主服务器维护当前可用的Region 服务器列表,以及Reginon的分布情况。当存在未被分配的 Region,并且有一个 Region 服务器上有可用空间时,Master 主服务器就给这个 Region 服务器发送一个请求,把该 Region 分配给它。Region 服务器接收请求并完成数据加载后,就开始负责管理该 Region 对象,并对外提供服务。

Region 服务器

  • Region 服务器是 HBase 中最核心的模块,负责维护分配给自己的 Region,并响应用户的读写请求。
  • HBase一般采用 HDFS 作为底层存储的文件系统,因此 Region 服务器需要向HDFS 中读写数据。采用 HDFS 作为底层存储系统,可以为 HBase 提供可靠稳定的数据存储,HBase自身并不具备数据复制和维护数据副本的功能,HDFS可以为HBase提供这些支持。

Region 服务器工作原理

  • Region 服务器内部管理一系列 Region 对象和一个 HLog 文件。HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个 Region 对象由多个 Store 组成,每个 Store 对应表中的一个列族的存储。每个 Store 又包含一个 MemStore 和若干个 StoreFile。其中,MemStore 是在内存中的缓存,保存最近更新的数据;StoreFile 是磁盘中的文件,文件是 B 树结构的,方便快速读取。
    在这里插入图片描述

用户读写数据的过程

  • 当用户写入数据时,会被分配到相应的 Region 服务器去执行操作。用户数据首先被写入MemStore 和 HLog 中,当操作写入 HLog 之后,commit()调用才会将其返回给客户端。当用户读取数据时,Region 服务器会首先访问 MemStore 缓存,如果数据不在缓存中,才会到磁盘上面的 StoreFile 中去寻找。

缓存的刷新

  • MemStore 缓存的容量有限,系统会周期性地调用 Region.flushcache()把 MemStore 缓存里面的内容写到磁盘的 StoreFile 文件中,清空缓存,并在 HLog 文件中写入一个标记,用来表示缓存中的内容已经被写入 StoreFile 文件中。每次缓存刷新操作都会在磁盘上生成一个新的 StoreFile 文件,因此每个 Store 会包含多个 StoreFile 文件
  • 每个Region服务器都有一个自己的 HLog 文件。在启动的时候,每个Region服务器会检查自己的 HLog 文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作。如果没有更新,说明所有数据已经被永久保存到磁盘的 StoreFile 文件中;如果发现更新,就先把这些更新写入 MemStore,然后刷新缓存,写入磁盘的StoreFile文件中。最后删除旧的 HLog 文件,并开始为用户提供数据访问服务。

StoreFile合并

  • 每次 MemStore 缓存的刷新操作都会在磁盘上生成一个新的 StoreFile 文件,系统中的每个 Store 可能存在多个 StoreFile 文件。当需要访问某个 Store 中的某个值时,必须查找所有StoreFile文件,非常耗费时间。因此,为了减少查找时间,系统一般会调用 Store.compact()把多个StoreFile文件合并成一个大文件。由于合并操作比较耗费资源,因此只会在StoreFile文件的数量达到一个阈值的时候才会触发合并操作。

Store 的工作原理

  • Region 服务器是 HBase 的核心模块,而 Store 是 Region 服务器的核心。每个 Store 对应了表中的一个列族的存储。每个 Store 包含一个 MemStore 缓存和若干个 StoreFile 文件。

  • MemStore 是排序的内存缓冲区,当用户写入数据,系统首先把数据放入 MemStore 缓存,当 MemStore 缓存满时,就会刷新到磁盘中的一个 StoreFile 文件中。随着 StoreFile 文件数量的不断增加,当达到事先设定的数量时,就会触发文件合并操作,多个 StoreFile 文件会被合并成一个大的 StoreFile 文件。当多个 StoreFile 文件合并后,会逐步形成越来越大的 StoreFile 文件,当单个StoreFile 文件大小超过一定阈值时,就会触发文件分裂操作。同时,当前的一个父 Region 会被分裂成两个子 Region,父 Region 会下线,新分裂出的两个子 Region 会被 Master 主服务器分配到相应的 Region 服务器上
    在这里插入图片描述

HLog 的工作原理

  • HBase 系统为每个 Region 服务器配置了一个 HLog 文件,它是一种预写式日志(Write Ahead Log),也就是说,用户更新数据必须首先被记入日志才能写入 MemStore 缓存,并且直到 MemStore缓存内容对应的日志已经被写入磁盘之后,该缓存内容才会被刷新写入磁盘。

  • ZooKeeper 服务器会实时监测每个 Region 服务器的状态,当某个 Region 服务器发生故障时,ZooKeeper 服务器会通知 Master 主服务器。Master 主服务器首先会处理该故障 Region 服务器上面遗留的 HLog 文件,由于一个 Region 服务器上面可能会维护多个 Region 对象,这些 Region 对象共用一个 HLog 文件,因此遗留的 HLog 文件中包含来自多个 Region 对象的日志记录。

  • 系统根据每条日志记录所属的 Region 对象对 HLog 数据进行拆分,分别放到相应 Region 对象的目录下,然后将失效的 Region 重新分配到可用的 Region 服务器中,并把与该 Region 对象相关的HLog 日志记录也发送给相应的 Region 服务器。Region 服务器领取分配给自己的 Region 对象以及与之相关的 HLog 日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入 MemStore 缓存,然后刷新到磁盘的 StoreFile 文件中,完成数据恢复。

  • HBase 系统中,每个 Region 服务器只需维护一个 HLog 文件,所有Region 对象共用一个 HLog,而不是每个 Region 对象使用一个 HLog。在这种 Region 对象共用一个 HLog 的方式中,多个 Region 对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,而不需要同时打开、写入多个日志文件中,可以减少磁盘寻址次数,提高对表的写操作性能。这种方式的缺点:如果一个 Region 服务器发生故障,为恢复其上的Region 对象,需要将 Region 服务器上的 HLog 按照其所属的 Region 对象进行拆分,然后分发到其他 Region 服务器上执行恢复操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux文本三剑客---grep

grep(从文本或字符串种过滤特定内容。) 格式:Usage: grep [OPTION]... PATTERNS [FILE]... 常用选项: -E 等价于 egrep 扩展正则 -i 忽略大小写 -w 匹配单词 -o 仅显示匹配内容 -r 递归匹配 -c 统计匹配的行数 -v 取反 -n 行号 -A…

vue2 事件总线

原图下载:https://download.csdn.net/download/weixin_47401101/88788636

如何在Shopee平台上进行宠物类目的选品丨shopee宠物选品

在Shopee平台上进行宠物类目的选品是一个重要的任务,它直接关系到卖家的销售业绩和市场竞争力。为了成功选择适合的宠物用品,在选品过程中,卖家可以遵循以下策略: 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#…

ZYNQ AC7020C的“点LED”实验

一、创建 Vivado 工程 1、启动 Vivado 2、在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程 3、弹出一个建立新工程的向导,点击“Next” 4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有…

瑞丽杂志引领潮流,VOSS眼镜概念店开启奢华新纪元!

近日,由《瑞丽》杂志社举办的2023第4届瑞丽轻奢品牌大赛,以“轻奢•悦藏”为主题的大赛已圆满结束,VOSS眼镜荣获:2023瑞丽轻奢品牌大赛「轻奢时尚风格奖」,作为眼镜行业唯一获此奖项的品牌,VOSS眼镜对此表示…

C++初阶入门之命名空间和缺省参数的详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.前言 二.命名空间 2.1命名冲突的例子 2.2解决方案 2.3命…

QT发生弹出警告窗口

QTC开发程序弹出警告窗口&#xff0c;如上图 实施代码&#xff1a; #include <QMessageBox> int main() {// 在发生错误的地方QMessageBox::critical(nullptr, "错误", "发生了一个错误&#xff0c;请检查您的操作。");}上面的文字可以更改&#x…

(2024,预训练和微调扩散,图编码器,图特征与CLIP特征对齐)场景图到图像合成:集成 CLIP 指导与扩散模型中的场景图条件

Scene Graph to Image Synthesis- Integrating CLIP Guidance with Graph Conditioning in Diffusion Models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 扩…

配置ARP安全综合功能示例

组网图形 ARP安全简介 ARP&#xff08;Address Resolution Protocol&#xff09;安全是针对ARP攻击的一种安全特性&#xff0c;它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击&#xff0c;还可以…

Servet的基础学习

Servet的基础学习 servet的简单介绍 Servlet 是运行在 Web 服务器或应用服务器上的程序&#xff0c;它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#xff0c;您可以收集来自网页表单的用户输入&#xff0…

插槽(64-67)

文章目录 插槽1.插槽 - 默认插槽(组件内可以定制一处结构)2.插槽 - 后备内容&#xff08;默认值&#xff09;3.插槽 - 具名插槽(组件内可以定制多处结构)4.作用域插槽(插槽的一个传参语法) 插槽 插槽分类:默认插槽和具名插槽 1.插槽 - 默认插槽(组件内可以定制一处结构) 作用…

PyTorch初探:基本函数与案例实践

正文&#xff1a; 在熟悉了PyTorch的安装和环境配置后&#xff0c;接下来让我们深入了解PyTorch的基本函数&#xff0c;并通过一个简单的案例来实践这些知识。 1. 基本函数 PyTorch的核心是张量&#xff08;Tensor&#xff09;&#xff0c;它类似于多维数组&#xff0c;但可以…

2024年最热门的十个AI对话聊天模型网站

1、百度文言一心 文言一心”是一个基于百度自研的ERNIE模型的聊天机器人。 “文心一言”是百度依托飞桨、文心大模型的技术研发的知识增强大语言模型&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xff0c;高效便捷地帮助人们获取信息、知识和灵感…

Springboot注解@Aspect(二)JoinPoint 使用详解

目录 JoinPoint 的作用 JoinPoint 常用方法 示例 JoinPoint 的子类和关联类 JoinPoint 的作用 在 Spring AOP 中&#xff0c;JoinPoint 接口代表了一个程序执行的点&#xff0c;比如方法执行或异常处理。当使用 AOP 通知&#xff08;Advice&#xff09;时&#xff0c;你可以…

环形链表的检测与返回

环形链表 王赫辰/c语言 - Gitee.com 快慢指针的差距可以为除一以外的数吗&#xff1f;不可以如果差奇数则无法发现偶数环&#xff0c;是偶数无法发现奇数环&#xff0c;本题思路为指针相遇则为环&#xff0c;而以上两种情况会稳定差一&#xff0c;导致指针永不相遇 最终返回…

uniapp组件库Line 线条 的适用方法

目录 #平台差异说明 #基本使用 #线条类型 1.3.7 #兼容性 #API #Props 此组件一般用于显示一根线条&#xff0c;用于分隔内容块&#xff0c;有横向和竖向两种模式&#xff0c;且能设置0.5px线条&#xff0c;使用也很简单。 #平台差异说明 AppH5微信小程序支付宝小程序百…

阿里云幻兽帕鲁服务器4核16G配置报价

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…

华为机考入门python3--(3)牛客3-明明的随机数

分类&#xff1a;集合、排序 知识点&#xff1a; 集合添加元素 set.add(element) 集合转列表 list(set) 列表排序 list.sort() 题目来自【牛客】 N int(input().strip()) nums set()for i in range(N):nums.add(int(input().strip()))# 集合转列表 nums_list l…

3.3 实验三:以太网链路聚合实验

HCIA-Datacom实验指导手册&#xff1a;3.3 实验三&#xff1a;以太网链路聚合实验 一、实验介绍&#xff1a;二、实验拓扑&#xff1a;三、实验目的&#xff1a;四、配置步骤&#xff1a;步骤 1 掌握使用手动模式配置链路聚合的方法步骤 2 掌握使用静态 LACP 模式配置链路聚合的…

C语言——动态内存管理

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位→…