【赵渝强老师】HBase的体系架构

在这里插入图片描述

HBase是大表(BigTable)思想的一个具体实现。它是一个列式存储的NoSQL数据库,适合执行数据的分析和处理。简单来说,就是适合执行查询操作。从体系架构的角度看,HBase是一种主从架构,包含:HBase HMaster、Region Server和ZooKeeper,下图展示了这一架构。
在这里插入图片描述

其中:

  • HBase HMaster负责Region的分配及数据库的创建和删除等操作。
  • Region server负责数据的读写服务。
  • ZooKeeper负责维护集群的状态。
视频讲解如下

【赵渝强老师】HBase的体系架构

下面详细讨论HBase体系架构中每一个组成部分的作用。

一、 HMaster

HMaster是整个HBase集群的主节点,它的职责主要体现在以下几方面:

  1. 负责在Region Server上分配和调控不同的Region。
  2. 根据恢复和负载均衡的策略,重新分配Region。
  3. 监控Region Server的状态。
  4. 管理和维护HBase的命名空间,即NameSpace。
  5. 接收客户端的请求,提供创建,删除或者更新表格的接口。

另一方面,如果整个集群中只存在一个HMaser,将造成单点故障的问题。因此也需要基于ZooKeeper来实现HBase的HA(高可用)。但是HBase实现HA非常简单,因为在其体系架构中已经包含了ZooKeeper,因此只需要手动再启动一个HMaster作为Backup HMaster即可。

视频讲解如下

【赵渝强老师】HBase的主节点HMaster

二、 Region Server

Region Server负责数据的读写操作。一个Region Server可以包含多个Region,而一个Region只能属于一个Region Server。那么什么是Region呢?可以把Region理解成是列族,它与列族的关系是一对多的关系。HBase表中的列族是根据rowkey的值水平分割成所谓的Region的。在默认情况下,Region的大小是1G,其中包含8个HFile的数据文件。而每个数据文件的大小正好是128M,与HDFS数据块的大小保存一致。每一个Region server大约可以管理1000个Region。

Region Server除了包含Region以外,还包含WAL预写日志、Block Cache读缓存和MemStore写缓存三个部分。

视频讲解如下

【赵渝强老师】HBase的从节点Region Server

2.1 WAL预写日志

Write-Ahead Logging是一种高效的日志算法,相当于Oracle中的redo log,或者是MySQL中的binlog。基本原理是在数据写入之前首先顺序写入日志,然后再写入缓存,等到缓存写满之后统一进行数据的持久化。WAL将一次随机写转化为了一次顺序写加一次内存写,在提供性能的前提下又保证了数据的可靠性。如果在写入数据完成之后发生了宕机,即使所有写缓存中的数据都丢失了,也可以通过恢复WAL日志达到数据恢复的目的。写入的WAL日志会对应有一个HLog文件。

《从大数据到云原生系列课程》

2.2 Block Cache读缓存

HBase将经常需要读取的数据放入Block Cache中,来提供读取数据的效率。当Block Cache的空间被占满后,将采用LRU算法将其中被读取频率最低的数据从Block Cache中清除。

2.3 MemStore写缓存

MemStore中主要存储了还未写入磁盘的数据,如果此时发生了宕机,这部分数据是会丢失的。HBase中的每一个列族对应一个MemStore,其中存储的是按键排好序的待写入硬盘的数据,数据也是按Rowkey排好序写入HFile中的,最终保存到HDFS中。

提示:HBase表中的数据最终保存在数据文件HFile中,并存储与HDFS的DataNode上。在将MemStore中的数据写入HFile中的时候,采用顺序写入的机制,避免了磁盘大量寻址的过程,从而大幅提高了性能。在读取HFile的时候,文件中包含的Rowkey信息会被加载到内存中,这样就可以保证数据检索只需一次硬盘查询操作。

三、 HBase中的ZooKeeper

ZooKeeper在整个HBase集群中主要维护节点的状态并协调分布式系统的工作。主要体现在以下几方面:

  1. 监控HBase节点的状态,包括:HMaster和RegionServer。
  2. 通过ZooKeeper的Watcher机制提供节点故障和宕机的通知。
  3. 保证服务器之间的同步。
  4. 负责Master选举的工作。

视频讲解如下:

视频讲解如下

【赵渝强老师】HBase中的ZooKeeper

下图展示了HBase在ZooKeeper中保存的数据信息。
在这里插入图片描述

视频讲解如下

【赵渝强老师】HBase中的ZooKeeper

《从大数据到云原生系列课程》

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

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

相关文章

linux 新增驱动宏config.in配置

‌1. 添加配置宏步骤‌ ‌1.1 修改 Kconfig(推荐方式)‌ ‌定位 Kconfig 文件‌ 内核各子目录(如 drivers/char/)通常包含 Kconfig 文件,用于定义模块配置选项7。‌添加宏定义‌ 示例:在 drivers/char/Kc…

关于git的使用

下载git 可以去git的官网下载https://git-scm.com/downloads 也可以去找第三方的资源下载,下载后是一个exe应用程序,直接点开一直下一步就可以安装了 右键任意位置显示这两个就代表成功,第一个是git官方的图形化界面,第二个是用…

WPF【11_8】WPF实战-重构与美化(UI 与视图模型的联动,实现INotifyPropertyChanged)

11-13 【重构】INotifyPropertyChanged 与 ObservableCollection 现在我们来完成新建客户的功能。 当用户点击“客户添加”按钮以后系统会清空当前所选定的客户,客户的详细信息以及客户的预约记录会从 UI 中被清除。然后我们就可以在输入框中输入新的客户信息了&am…

ArkUI:鸿蒙应用响应式与组件化开发指南(一)

文章目录 引言1.ArkUI核心能力概览1.1状态驱动视图1.2组件化:构建可复用UI 2.状态管理:从单一组件到全局共享2.1 状态装饰器2.2 状态传递模式对比 引言 鸿蒙生态正催生应用开发的新范式。作为面向全场景的分布式操作系统,鸿蒙的北向应用开发…

List优雅分组

一、前言 最近小永哥发现,在开发过程中,经常会遇到需要对list进行分组,就是假如有一个RecordTest对象集合,RecordTest对象都有一个type的属性,需要将这个集合按type属性进行分组,转换为一个以type为key&…

AI与.NET技术实操系列(八):使用Catalyst进行自然语言处理

引言 自然语言处理(Natural Language Processing, NLP)是人工智能领域中最具活力和潜力的分支之一。从智能客服到机器翻译,再到语音识别,NLP技术正以其强大的功能改变着我们的生活方式和工作模式。 Catalyst的推出极大降低了NLP…

MySQL 8.0 OCP 1Z0-908 题目解析(13)

题目49 Choose the best answer. t is a non - empty InnoDB table. Examine these statements, which are executed in one session: BEGIN; SELECT * FROM t FOR UPDATE;Which is true? ○ A) mysqlcheck --analyze --all - databases will execute normally on all ta…

Docker 一键部署倒计时页面:Easy Countdown全设备通用

Easy Countdown 介绍 Easy countdown是一个易于设置的倒计时页面。可以设置为倒计时或计时器。可用于个人生活、工作管理、教育、活动策划等多个领域。 🚢 项目地址 Github:https://github.com/Yooooomi/easy-countdown 🚀Easy Countdown …

Python训练打卡Day35

模型可视化与推理 知识点回顾: 三种不同的模型可视化方法:推荐torchinfo打印summary权重分布可视化进度条功能:手动和自动写法,让打印结果更加美观推理的写法:评估模式 模型结构可视化 理解一个深度学习网络最重要的2点…

四、生活常识

一、效应定律 效应 1、沉没成本效应 投入的越多,退出的难度就越大,因为不甘心自己之前的所有付出都付之东流。 2、破窗效应 干净的环境下,没有人会第一个丢垃圾,但是当环境变得糟糕,人们就开始无所妒忌的丢垃圾。…

机器学习圣经PRML作者Bishop20年后新作中文版出版!

机器学习圣经PRML作者Bishop20年后新书《深度学习:基础与概念》出版。作者克里斯托弗M. 毕晓普(Christopher M. Bishop)微软公司技术研究员、微软研究 院 科学智 能 中 心(Microsoft Research AI4Science)负责人。剑桥…

Python应用嵌套猜数字小游戏

大家好!今天向大家分享的是有关“嵌套”的猜数字小游戏。希望能够帮助大家理解嵌套。 代码呈现: # 1. 构建一个随机的数字变量 import random num random.randint(1, 10)guess_num int(input("输入你要猜测的数字: "))# 2. 通过if判断语句进行数字的猜…

黑马k8s(十四)

1.Service-概述 service:用于四层路由的负载,Ingress七层路由的负载;,先学习service 开启ipvs 2.Service-资源清单文件介绍 修改每个显示的内容 ClusterIP类型的Service Endpoints:建立service与pod关联 亲和性测试…

Kotlin 中 Lambda 表达式的语法结构及简化推导

在 Kotlin 编程中,Lambda 表达式是一项非常实用且强大的功能。今天,我们就来深入探讨一下 Lambda 表达式的语法结构,以及它那些令人 “又爱又恨” 的简化写法。 一、Lambda 表达式完整语法结构 Lambda 表达式最完整的语法结构定义为{参数名…

Kafka Streams 和 Apache Flink 的无状态流处理与有状态流处理

Kafka Streams 和 Apache Flink 与数据库和数据湖相比的无状态和有状态流处理的概念和优势。 在数据驱动的应用中,流处理的兴起改变了我们处理和操作数据的方式。虽然传统数据库、数据湖和数据仓库对于许多基于批处理的用例来说非常有效,但在要求低延迟…

【后端高阶面经:缓存篇】34、高并发下缓存穿透、击穿、雪崩怎么解决

一、缓存三大核心问题:穿透、击穿、雪崩的本质区别 (一)概念对比表 问题类型核心特征典型场景危害等级缓存穿透数据在缓存和数据库中均不存在,请求直接穿透到数据库恶意攻击(伪造不存在的ID)、业务逻辑漏洞★★★★★缓存击穿热点数据在缓存中过期,大量并发请求同时击穿…

使用Rancher在CentOS 环境上部署和管理多Kubernetes集群

引言 随着容器技术的迅猛发展,Kubernetes已成为容器编排领域的事实标准。然而,随着企业应用规模的扩大,多集群管理逐渐成为企业IT架构中的重要需求。 Rancher作为一个开源的企业级多集群Kubernetes管理平台,以其友好的用户界面和…

【Mini-F5265-OB开发板试用测评】按键控制测试

本文介绍了如何使用按键控制 MCU 引脚的输出电平。 原理 由原理图可知 板载用户按键 K1 和 K2 分别与主控的 PB0 和 PB1 相连。 代码 #define _MAIN_C_#include "platform.h" #include "gpio_key_input.h" #include "main.h"int main(void) …

用C#最小二乘法拟合圆形,计算圆心和半径

用C#最小二乘法拟合圆形&#xff0c;计算圆心和半径 using System; using System.Collections.Generic;namespace ConsoleApp2 {internal class Program{static void Main(string[] args){List<Tuple<double, double>> points new List<Tuple<double, doubl…

四、web安全-行业术语

1. 肉鸡 所谓“肉鸡”是一种很形象的比喻&#xff0c;比喻那些可以随意被我们控制的电脑&#xff0c;对方可以是WINDOWS系统&#xff0c;也可以是UNIX/LINUX系统&#xff0c;可以是普通的个人电脑&#xff0c;也可以是大型的服务器&#xff0c;我们可以象操作自己的电脑那样来…