一文带你读懂 Hbase 的架构组成[通俗易懂]

一文带你读懂 Hbase 的架构组成[通俗易懂]hi,大家好,我是大D。今天咱们继续深挖一下 HBase 的架构组成。 Hbase 作为 NoSQL 数据库的代表,属于三驾马车之一 BigTable 的对应实现,HBase 的出现很好地弥补了大数据

一文带你读懂 Hbase 的架构组成

hi,大家好,我是大D。今天咱们继续深挖一下 HBase 的架构组成。

Hbase 作为 NoSQL 数据库的代表,属于三驾马车之一 BigTable 的对应实现,HBase 的出现很好地弥补了大数据快速查询能力的空缺。在前面咱们也有介绍过 HBase 的数据模型,感兴趣的小伙伴可以翻看下。谈谈你对HBase数据模型的认识?

HBase 的核心架构由五部分组成,分别是 HBase Client、HMaster、Region Server、ZooKeeper 以及 HDFS。它的架构组成如下图所示。

一文带你读懂 Hbase 的架构组成[通俗易懂]

下面我们对 HBase 架构组成的每一部分详细介绍一下。

1.HBase Client

HBase Client 为用户提供了访问 HBase 的接口,可以通过元数据表来定位到目标数据的 RegionServer,另外 HBase Client 还维护了对应的 cache 来加速 Hbase 的访问,比如缓存元数据的信息。

2.HMaster

HMaster 是 HBase 集群的主节点,负责整个集群的管理工作,主要工作职责如下:

  • 分配Region:负责启动的时候分配Region到具体的 RegionServer;
  • 负载均衡:一方面负责将用户的数据均衡地分布在各个 Region Server 上,防止Region Server数据倾斜过载。另一方面负责将用户的请求均衡地分布在各个 Region Server 上,防止Region Server 请求过热;
  • 维护数据:发现失效的 Region,并将失效的 Region 分配到正常的 RegionServer 上,并且在Region Sever 失效的时候,协调对应的HLog进行任务的拆分。

3.Region Server

Region Server 直接对接用户的读写请求,是真正的干活的节点,主要工作职责如下。

  • 管理 HMaster 为其分配的 Region;
  • 负责与底层的 HDFS 交互,存储数据到 HDFS;
  • 负责 Region 变大以后的拆分以及 StoreFile 的合并工作。

与 HMaster 的协同:当某个 RegionServer 宕机之后,ZK 会通知 Master 进行失效备援。下线的 RegionServer 所负责的 Region 暂时停止对外提供服务,Master 会将该 RegionServer 所负责的 Region 转移到其他 RegionServer 上,并且会对所下线的 RegionServer 上存在 MemStore 中还未持久化到磁盘中的数据由 WAL 重播进行恢复。

下面给大家详细介绍下 Region Serve数据存储的基本结构,如下图所示。一个 Region Server 是包含多个 Region 的,这里仅展示一个。 一文带你读懂 Hbase 的架构组成[通俗易懂]

  • Region:每一个 Region 都有起始 RowKey 和结束 RowKey,代表了存储的Row的范围,保存着表中某段连续的数据。一开始每个表都只有一个 Region,随着数据量不断增加,当 Region 大小达到一个阀值时,Region 就会被 Regio Server 水平切分成两个新的 Region。当 Region 很多时,HMaster 会将 Region 保存到其他 Region Server 上。

  • Store:一个 Region 由多个 Store 组成,每个 Store 都对应一个 Column Family, Store 包含 MemStore 和 StoreFile。

    • MemStore:作为HBase的内存数据存储,数据的写操作会先写到 MemStore 中,当MemStore 中的数据增长到一个阈值(默认64M)后,Region Server 会启动 flasheatch 进程将 MemStore 中的数据写人 StoreFile 持久化存储,每次写入后都形成一个单独的 StoreFile。当客户端检索数据时,先在 MemStore中查找,如果MemStore 中不存在,则会在 StoreFile 中继续查找。
    • StoreFile:MemStore 内存中的数据写到文件后就是StoreFile,StoreFile底层是以 HFile 的格式保存。HBase以Store的大小来判断是否需要切分Region。

当一个Region 中所有 StoreFile 的大小和数量都增长到超过一个阈值时,HMaster 会把当前Region分割为两个,并分配到其他 Region Server 上,实现负载均衡。

  • HFile:HFile 和 StoreFile 是同一个文件,只不过站在 HDFS 的角度称这个文件为HFile,站在HBase的角度就称这个文件为StoreFile。

  • HLog:负责记录着数据的操作日志,当HBase出现故障时可以进行日志重放、故障恢复。例如,磁盘掉电导致 MemStore中的数据没有持久化存储到 StoreFile,这时就可以通过HLog日志重放来恢复数据。

4.ZooKeeper

HBase 通过 ZooKeeper 来完成选举 HMaster、监控 Region Server、维护元数据集群配置等工作,主要工作职责如下:

  • 选举HMaster:通ooKeeper来保证集中有1HMaster在运行,如果 HMaster 异常,则会通过选举机制产生新的 HMaster 来提供服务;
  • 监控Region Server: 通过 ZooKeeper 来监控 Region Server 的状态,当Region Server 有异常的时候,通过回调的形式通知 HMaster 有关Region Server 上下线的信息;
  • 维护元数据和集群配置:通过ooKeeper储B信息并对外提供访问接口。

5.HDFS

HDFS 为 HBase 提供底层数据存储服务,同时为 HBase提供高可用的支持, HBase 将 HLog 存储在 HDFS 上,当服务器发生异常宕机时,可以重放 HLog 来恢复数据。

另外,非常欢迎大家加我VX: Abox_0226 ,备注「进群」,有关大数据技术的问题在群里一起探讨。

原文地址:https://www.cnblogs.com/datadance/archive/2022/05/16/16276543.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5261.html

(0)
上一篇 2023-05-16
下一篇 2023-05-16

相关推荐

  • navicat导入oracle数据_cmd导入dmp文件命令

    navicat导入oracle数据_cmd导入dmp文件命令1. 2,点击其他–新建目录–输入目录路径….dmp的目录 3,新建一个表空间, 其他–表空间–新建表空间 点击保存 4…点击数据泵,,数据泵导入 5…点击生成sql,运行, (运

    2023-02-27
    103
  • 使用ElasticSearch赋能HBase二级索引 | 实践一年后总结[通俗易懂]

    使用ElasticSearch赋能HBase二级索引 | 实践一年后总结[通俗易懂]前言: 还记得那是2018年的一个夏天,天气特别热,我一边擦汗一边听领导大刀阔斧的讲述自己未来的改革蓝图。会议开完了,核心思想就是:我们要搞一个数据大池子,要把公司能灌的数据都灌入这个大池子,然后让别

    2023-02-15
    100
  • 利用Python Tkinter实现图形用户界面

    利用Python Tkinter实现图形用户界面在计算机软件开发中,图形用户界面(GUI,Graphical User Interface)是一种用户界面,它使用图像、图标和视觉方式呈现给用户,使用户与软件进行交互。Python作为功能强大且易于上手的编程语言,其标准库中包含的Tkinter模块可以用于创建GUI应用程序。通过使用Tkinter,可以为Python程序添加强大的、易于使用的图形化用户界面。

    2024-01-18
    90
  • mysql常见问题解决方案有哪些_mysql单表千万级数据查询

    mysql常见问题解决方案有哪些_mysql单表千万级数据查询属性顺序错误 一般情况下字段类型要放在前面,限制参数放在后面,UNSIGNEDZEROFILL 之间没有先后顺序,主键 KEY 和 auto_increment 要放在UNSIGNED ZEROFIL

    2023-01-22
    114
  • rdd创建有哪几种方式_redis rdb原理

    rdd创建有哪几种方式_redis rdb原理RDD的详解 RDD:弹性分布式数据集,是Spark中最基本的数据抽象,用来表示分布式集合,支持分布式操作! RDD的创建 RDD中的数据可以来源于2个地方:本地集合或外部数据源 RDD操作 分类 转

    2023-04-27
    104
  • 第03章_基本的SELECT语句「建议收藏」

    第03章_基本的SELECT语句「建议收藏」第03章_基本的SELECT语句 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖

    2023-04-28
    108
  • 数据库事务系列-MySQL跨行事务模型「建议收藏」

    数据库事务系列-MySQL跨行事务模型「建议收藏」说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道,但说实话那段时间并没有很深入的理解MySQL内核,做的事情基本

    2022-12-16
    102
  • Python 32位与64位版本区别

    Python 32位与64位版本区别Python是一种高级别的脚本语言,由于其简单易懂的语法和丰富的标准库而变得非常受欢迎。Python有多种版本,其中32位和64位版本是最受关注的两种版本。本文将从多个方面介绍Python 32位和64位版本的区别。

    2024-04-18
    25

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注