大数据之HBase高级

news2024/9/28 9:29:49

文章目录

  • 前言
  • 一、HBase的架构
    • (一)Client
    • (二)Master Server
    • (三)Region Server
  • 二、HBase的工作原理
    • (一)存储数据流程
    • (二)读取数据流程
    • (三)MemStore的溢写合并


前言

#博学谷IT学习技术支持#
上一篇文章主要探讨HBase基础知识,本篇文章探讨HBase更加深层次的知识,主要有HBase的架构,底层原理和读写流程等,如果有不准确的地方,请不吝赐教。

一、HBase的架构

在这里插入图片描述HBase结构主要包含Client,Master Server和Region Server三大部分:

(一)Client

客户端,主要发起HBase操作的请求

(二)Master Server

在这里插入图片描述
Master Server主要负责管理工作,主要作用如下:

  1. 管理集群中众多从节点
  2. 管理HBase的元数据
  3. 负责分配Region到各个从节点中
  4. 保证Region的负载均衡

(三)Region Server

  • 数据处理主要由Region Server负责,其工作如下:
  1. 管理主节点分配的Region
  2. 负责数据的读写操作
  3. 负责向主节点汇报元数据信息
  • Region Server结构
    在这里插入图片描述
    Region Server包含了大量的组件,如Region、Store、StoreFile等,所有组件各司其职,共同协作保证RegionServer的正常运行,接下来对各个组件做进一步的说明:
  1. Region
    在这里插入图片描述
    在HBase中,表被横着划分为很多个Region
  2. Store
    在这里插入图片描述

Region按照列族将HBase的表划分为一个一个Store,理论上一个列族就是一个Store
3. MemStore
MemStore与缓存内存相似,往HBase写入数据时,数据会先写入到MemStore中,当MemStore中是数据量达到一定阈值或者一段时间,会触发RegionServer的Flush刷写机制,将MemStore中的数据写入到StoreFile中,以达到持久化存储。
4. StoreFile
MemStore中的数据达到一定阈值时,会将数据写入到StoreFile中,其底层以HFile的格式存储。
5. WAL
每个Region Server中都有一个HLog的实例,HLog机制是WAL预写日志的一种实现方式,WAL全称为Write Ahead Log,其最大的作用就是故障恢复,往HBase写数据时,会先写到HLog中,然后再写入到MemStore,最终才会将数据写入到持久化的StoreFile中,当写入数据时Region Server宕机,若数据没有写入到HFile或者MemStore中的数据还未保存到StoreFile中,此时若没有WAL机制就会造成数据丢失,WAL机制保证了写数据的可靠性。

二、HBase的工作原理

(一)存储数据流程

在这里插入图片描述

存储数据主要分为两个部分,一部分是客户端的流程,另一部分是服务端的流程,详细流程如下:
客户端:

  1. 客户端发起写入数据的请求;
  2. 连接Zookeeper获取hbase:meta表所在的Region Server地址;
  3. 客户端连接meta表所在的Region Server,根据meta获取目标表对应要写入数据的Region地址(基于Region的StartKey和EndKey来确定)
  4. 连接Region对应的Region Server,开始进行数据写入
  5. 首先会将数据写入到对应Region Server的HLog中,然后再将数据写入到对应Region的Store模块的MemStore中,当这两个地方都已经完成数据的写入,Client客户端就认为数据已经写入成功。
    服务器端:
  6. 客户端不断进行数据的写入,Region Server的MemStore中的数据量不断增加,数据量到达一定阈值(默认128M或1小时),会触发Flush刷新机制,将数据写入到HDFS中,形成StoreFile文件;
  7. 随着数据的不断写入,StoreFile越来越多,当StoreFile文件达到一定的数量(3个及以上),此时会触发Compact合并压缩机制,将多个StoreFile文件合并成一个较大的HFile文件
  8. 数据不断进行合并,HFile文件越来越大,达到一定大小(默认为10G)后会触发Split分裂机制,将HFile一分为二,此时Region也会跟着拆分成两个新的Region,每个新的Region管理各自的HFile文件,旧的Region就会下线。
  9. 随着客户端不断进行数据的写入,Region不断进行拆分,Region的数量也就越来越多。

(二)读取数据流程

【补截图】

  1. Client客户端访问Zookeeper获取HBase:meta表所在的Region Server地址;
  2. 连接meta表对应的Region Server,访问meta表获取目标数据存储的Region Server地址;
  3. 访问目标数据所在的Region Server,根据meta表中存储的元数据(nameSpace、表名和rowKey)查找对应Region;
  4. 先查询MemStore中是否存在目标数据,若没有找到再查找StoreFile文件中的数据

(三)MemStore的溢写合并

【补截图】

当MemStor写入的数据过多时,会触发flush溢写操作,进行文件的溢写形成一个StroeFile,当溢写的文件过多时,会触发Compact合并操作,将StoreFile文件合并成HFile文件。

  1. 触发的条件
  • 当MemStore大小达到设定的值时,默认为128M,则触发Region级别的Flush溢写;
    【补截图】

  • MemStore存活时间超过设定的时间时,默认1小时,也会触发RegionServer级别的Flush刷写
    在这里插入图片描述


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

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

相关文章

《计算机组成与设计》01. 计算机抽象及相关技术

文章目录计算机体系结构中的 8 个伟大思想面向摩尔定律的设计使用抽象简化设计加速经常性事件通过并行提高性能通过流水线提高性能存储层次通过冗余提高可靠性性能性能的度量时钟周期数和时钟周期长度与CPU时间的公式指令性能公式经典的 CPU 性能公式CPI 计算公式程序执行时间计…

微前端基础

一、什么是微前端 微前端是一种软件架构,可以将前端应用拆解成一些更小的能够独立开发部署的微型应用,然后再将这些微应用进行组合使其成为整体应用的架构模式。微前端架构类似于组件架构,但不同的是,组件不能独立构建和发布&…

7 MMSegmentation 代码教学

本文是openmmlab AI实战营的第七次课程的笔记,以下是我比较关注的部分。本次课程的主要内容是 mmsegmentation的代码教学实战,我会稍微详细记载。环境安装云在线平台 :Featurize推荐代码运行环境:GPU RTX3060 ,CUDA 11.2安装pytor…

[SSD固态硬盘技术 0] SSD的结构和原理导论

版权声明: 本文禁止转载机械硬盘的存储系统由于内部结构,其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大。以Nand Flash为存储介质的固态硬盘技术的发展,性能瓶颈得到缓解。1. 什么是SSD固态硬盘(Solid State Drives&#xf…

Python爱心代码

前言 Python漂浮爱心,具体源码见:Python动态爱心代码_爱心代码-Python文档类资源-CSDN下载 爱心类 class Heart(): #每个爱心(爱心类) def __init__(self): self.r ra.randint(10,15) #爱心的半径 …

[LeetCode 1138]字母板上的路径

题目描述 题目链接:[LeetCode 1138]字母板上的路径 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所…

图形编辑器:绘制图形需要用到的填充算法

大家好,我是前端西瓜哥。今天我们来谈谈图形编辑器中,简单说说图形编辑实现图形工具,需要用到的填充算法。 图形的特点是宽高是固定的,在图形编辑器绘制图片有两种方案。 一种是将 宽高比锁死,不允许改变&#xff0c…

SpringCloud和微服务介绍

SpringCloud介绍 SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集。 该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作提供了一种简单的开发方式。 SpringCloud中包含了多个子项目: Spring …

Properties类读配置文件、修改配置文件

Properties类简介(1)Properties类是专门用于读写配置文件的集合类(2)配置文件的后缀名为.properties,内容格式为:# 可以用“#”作为注释 键值 键值**注意:**键值对不需要有空格,值不需要用引号一起来。默认类型是String。键、值不可以是null(3)Properties类的方法可查找api文档…

Java编程介绍以及学习路线

1.Java的起源 Java源自Sun公司的一个叫Green的项目,其原先的目的是为家用电子消费产品开发一个分布式代码系统,这样就可以将通信和控制信息发给电冰箱、电视机、烤面包机等家用电器,对它们进行控制和信息交流。最初Green项目的工程师们准备采…

数据挖掘,计算机网络、操作系统刷题笔记48

数据挖掘,计算机网络、操作系统刷题笔记48 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

2.11sql的增删查改

一.CURD(增删查改1.c新增insert往表里添加数据注意事项1.2.3.4.5.如果是蓝丁文的2.R1.全列查找这一步很危险2.指定列查找3.带表达式的查找4.别名5.查找结果去重:DISTINCT6 排序:ORDER BY7 条件查询:WHERE1.比较运算符WHERE条件可以使用表达式&#xff0c…

如何生成毕业论文的目录和创建模板

有粉丝同学最近在写毕业论文,其中比较让人恼火的是毕业论文的目录,折腾了几遍没弄好,想让我写个简单地教程,那就来吧。主要分为三步:第一步是从模板里面提取标题的样式,第二步是对自己的论文使用设置好的标…

DaVinci:调色版本

调色版本 Grade Version记录着片段的全部调色信息。将一种调色风格或效果,保存为一个调色版本,从而可在多个调色版本之间查看、比较、挑选或者渲染输出。调色版本类型本地版本Local Versions在没有创建新的调色版本之前,片段的调色信息默认记…

MySQl单表查询

表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar…

1dB压缩点和三阶交调点、相位差与延时

1dB压缩点与三阶交调点 要知道放大器是一个非线性系统,传输函数基本用泰勒级数表示 如果输入信号幅度很小,那么上式中2次及以上的项就可以忽略而成为小信号的情况。在许多情况下我们可以忽略3次以上的项。 如果输入一个正弦信号 1、可以看到一个单频率…

webpack-dev-server 的 host 配置 0.0.0.0

webpack-devserver 的 host 配置 0.0.0.0配置成0.0.0.0有什么意义为什么会有以上现象什么是webpack-dev-server什么是0.0.0.0什么是127.0.0.1什么是localhost配置成0.0.0.0有什么意义 假如某个vue项目的webpack配置如下: 在这module.exports {dev: {...//其余的配…

ubuntu部署quark-5

下载源代码 解压zip sudo apt-get install unzip unzip xxxxx.zip安装所需要的包 sudo apt install python2 # 查看是否配置了默认的python sudo update-alternatives --list python若没有设置,会显示: # update-alternatives: error: no alterna…

多行文本在块元素中垂直居中

单行文本垂直居中对齐 在块元素中&#xff0c;让单行文本居中&#xff0c;可以使用line-height等于块元素的高&#xff0c;即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…

Java:SpringMVC的使用(1)

目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…