大数据 | HBase基本工作原理

news/2024/4/27 7:30:54/文章来源:https://blog.csdn.net/m0_63398413/article/details/130070508

前文回顾:MapReduce基本原理

目录

📚HBase基本介绍

🐇HBase的设计目标和功能特点

🐇HBase在Hadoop中的生态环境

📚HBase的数据模型

🐇逻辑数据模型

🐇物理存储格式

📚HBase基本构架

📚HBase数据存储管理方法

🐇HBase子表数据存储与子表服务器

🐇HBase数据的访问

🐇HBase数据记录的查询定位


📚HBase基本介绍

HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL(not only SQL) 数据库。

🐇HBase的设计目标和功能特点

Hadoop主要是实现批量数据的处理,并且通过顺序方式访问数据。要查找数据必须搜索整个数据集,如果要进行随机读取数据,压根就不支持。即Hadoop仅适合存储大批量的数据,进行顺序化读取数据,并不支持随机读取数据操作。

  • 针对HDFS缺少结构化半结构化数据存储访问能力的缺陷,提供一个分布式数据管理系统,解决大规模的结构化和半结构化数据存储访问问题
  • 提供基于列存储模式的大数据表管理能力。可存储管理数十亿以上的数据记录,每个记录可包含百万以上的数据列。
  • HBase试图提供随机和实时的数据读写访问能力。
  • 具有高可扩展性、高可用性、容错处理能力、负载平衡能力、以及实时数据查询能力。

🐇HBase在Hadoop中的生态环境

  • 构建于分布式文件系统HDFS之上。HBase的数据(底层数据)实际上是放在HDFS里的。
  • 为上层应用提供结构化半结构化海量数据存储访问能力。

  • 可与MapReduce协同工作,为MapReduce提供数据输入输出,以完成数据的并行化处理。

📚HBase的数据模型

🐇逻辑数据模型

HBase是一个分布式多维表,表中的数据通过:一个行关键字(row key),一个列关键字(column family + column name),一个时间戳(time stamp)进行索引和查询定位。

  • region
    • 类比于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
  • 行关键字
    • HBase一张表可以有上亿行记录,每一行都是由一个行关键字来标识的。和关系型数据库中的主键不同,HBase的row key只能是一个字段而不可以是多个字段的组合。
    • HBase保证对所有行按照row key进行字典排序。也就是说,HBase保证相邻row key的行在存储时必然是相邻存放的。(row key是最大长度为64KB的byte数组,实际应用中长度一般为10bytes~100bytes。由于HBase只允许单字段的row key,因此在实际应用中需要时经常把多个字段组合成一个复合row key。)
  • 列族和列名
    • HBase每张表都有一个或者多个列族。列族必须在使用表之前定义。
    • 从本质来说,HBase的列族就是一个容器。HBase表中的每个列,都必须归属于某个列族。
    • 列名都以列族作为前缀,列如courses:historycourses:math都属于courses这个列族。
    • 在具体实现上,一张表中的不同列族是分开独立存放的。就是说,如果有两个列族family1和family2,那么在HDFS存储时,family1是一组文件,family2是另外一组文件,两者不能混合存储。
    • HBase的访问控制、磁盘和内存的使用统计等都是在列族层面进行的。
    • 在每个列族中,可以存放很多的列,而每行每列族中的列数量是可以不同的,数量可以很大。简单来说,可以认为每行每列族中保存的是一个Map映射表
  • 时间戳
    • HBase中每个存储单元都保存着同一份数据的多个版本。版本通过时间戳来索引
    • 每个存储单元中,不同版本的数据按照时间戳的大小倒序排序,即最新的数据排在最前面。这样在读取时,将先读取到最新的数据(时间戳可以由HBase(当数据写入时自动用当前系统时间)赋值,也可以由用户显示赋值。如果应用程序要避免数据版本冲突,可以自己生成具有唯一性的时间戳。)

优秀网图

🐇物理存储格式

  • 对于HBase来说,它根本不认为存在行列这样的概念,在实现时只认为存在键值对这样的概念。键值对的存储是排序的,行概念是通过相邻的键值对比较而构建出来的。
  • 也就是说,HBase在物理实现上并不存在传统数据库中的二维表概念。因此二维表中字段值的空洞,对于HBase来说在物理实现上并不存在,而不是所谓的值为null
  • 按列存储的稀疏行/列矩阵。物理存储格式上按逻辑模型中的行进行分割,并按照列族存储。

  • 值为空的列不予存储,节省存储空间。

优秀网图

📚HBase基本构架

由一个MasterServer和一组子表数据区服务器RegionServer构成,分别存储逻辑大表中的部分数据

  • HBase Master:Master是HBase集群的主控服务器,负责集群状态的管理维护。Master可以有多个,但只有一个是活跃的(负责人里的真正老大。
    • 为Region Server分配Region。
    • 负责Region Server的负载均衡。
    • 发现失效的Region Server并重新分配其上的Region。
    • HDFS上的垃圾文件回收。
    • 处理schema更新请求。
  • HBase Region Server:Region Server是HBase具体对外提供服务的进程。
    • Region Server维护Master分配给它的Region,处理对这些Region的I/O请求。
    • Region Server负责切分在运行过程中变得过大的Region。

  • 当一个新的子表服务器注册时,主服务器让新的子表服务器装载子表。
  • 若主服务器与子表服务器连接超时,那么子表服务器将自动停止,并重新启动;而主服务器则假定该子表服务器已死机,将其上的数据转移至其它子表服务器,将其上的子表标注为空闲,并在重新启动后另行分配使用。

📚HBase数据存储管理方法

🐇HBase子表数据存储与子表服务器

大表被分为很多个子表(Region),每个子表存储在一个子表服务器RegionServer上

每个子表中的数据区Region由很多个数据存储块Store构成,而每个Store数据块又由存放在内存中的memStore和存放在文件中的StoreFile构成。

  • 每个列族就存储在一个Store中。
  • StoreFile以Hfile格式保存在HDFS上。

  • 每个表一开始只有一个Region,随着数据不断插入表,Region不断增大。当一个Region增大到一个阈值(由参数hbase.hregion.max.filesize指定,但这个阈值其实不是限制每个Region大小的,而是限制每个Store大小的)的时候,原来的Region会被分裂成两个新的Region(从而保证Region不会过大)。
  • 随着表中的行数不断增多,Region的数目也会逐渐增多。
  • 多个region共享一个日志(串行)

🐇HBase数据的访问

  • 当客户端需要进行数据更新时,先查到子表服务器,然后向子表提交数据更新请求。提交的数据并不直接存储到磁盘上的数据文件中,而是添加到一个基于内存的子表数据对象memStore中,当memStore中的数据达到一定大小时,系统将自动将数据写入到文件数据块StoreFile中。(就和抽血检测似的,抽满一板统一提交去检测)

  • 每个文件数据块StoreFile最后都写入到底层基于HDFS的文件中(Hfile)

  • 需要查询数据时,子表先查memStore。如果没有,则再查磁盘上的StoreFile。每个StoreFile都有类似B树的结构,允许进行快速的数据查询。StoreFile将定时压缩,多个压缩为一个。

  • 两个小的子表可以进行合并。

🐇HBase数据记录的查询定位

  • 描述所有子表和子表中数据块的元数据都存放在专门的元数据表中,并存储在特殊的子表中。子表元数据会不断增长,因此会使用多个子表来保存。
  • 所有元数据子表的元数据都保存在根子表中。主服务器会扫描根子表,从而得到所有的元数据子表位置,再进一步扫描这些元数据子表即可获得所寻找子表的位置。
  • 元数据子表采用三级索引结构

根子表->用户表的元数据表->用户表

  1. 按表的名字排序
  2. 大表里的行是按role-key作为代表
  3. 每个region里的第一行的role-key作为代表

参考教材:《深入理解大数据:大数据处理与编程实现》

参考博客:HBase简介

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

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

相关文章

使用golang连接kafka

1 下载,配置,启动 kafka 下载链接 配置修改 在config目录下的server文件和zookeeper文件,其中分别修改kafka的日志保存路径和zookeeper的数据保存路径。 启动kafka 先启动kafka自带的zookeeper,在kafka的根目录下打开终端&a…

教程 | 多通道fNIRS数据的预处理和平均(下)

前言 前文近红外数据的预处理和平均(上)提到fNIRS是一种评估氧和脱氧血红蛋白浓度变化的方法,可与fMRI相媲美。fNIRS的不足是它的空间分辨率比fMRI差,但其优点是有更高的时间分辨率,并允许测量无法通过fMRI扫描仪测试…

VsCode 将源代码管理中的新旧代码上下对比变为左右对比

文章目录一、默认设置二、左右布局变成了上下布局三、解决方法:将上下布局改为左右布局1:找到右上角的更多设置2:点击更多设置后点击【切换到并排视图】3:效果如下(还是原来的效果)四、左右切换成上下总结一…

Python与各种开发语言比较、对比优略

选择要学习的技术和选择要上的大学一样重要,如果选错了,你将来不仅得不到自己喜欢的高薪工作,反而会弄得一堆麻烦。如果你打开了这篇文章,说明你已经考虑选择Python开发作为你以后的职业了。在这篇文章里,我们会详细找…

stata变量引用

stata变量引用–潘登同学的stata笔记 文章目录stata变量引用--潘登同学的stata笔记变量生成gen命令通配符:*, ?, -因子变量时间序列变量命名、前缀与标签变量命名、添加前缀通配符与批量重命名变量标签数字-文字对应表CSMAR数据处理查看、查找变量单值、暂元单值暂…

超详细!腾讯NLP算法岗面经(已offer)

作者 | ZipZou整理 | NewBeeNLP面试锦囊之面经分享系列,持续更新中 可以后台回复"面试"加入交流讨论组噢分享一篇旧文,希望大家都成功上岸~写在前面首先来段简单的自我介绍:2021届硕士,硕士期间未有实习经历&#xff0c…

FE_CSS 页面布局之浮动

网页布局的本质——用 CSS 来摆放盒子。 把盒子摆放到相应位置。CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序): 普通流(标准流)浮动定位 1 标准流(普通流/文档流) 所谓的标准流: 就是标签按照规定…

Runtime命令参数字符串和数组比较

问题 最近有个问题本地执行 ssh -p 8084 root10.224.122.51 \"ssh -p 22 root192.168.5.157 mkdir -p /opt/dw-release/pdld-admin\"程序执行总是报错: No such file or directory 但是直接在终端执行正常,这就很奇怪。肯定能推出是程序执行…

10.1 二重积分的概念与性质

学习目标: 学习二重积分,我会采取以下几个步骤: 了解基本概念:首先我会学习二重积分的定义及其意义,了解二重积分的性质和特点,以及二重积分的计算方法。 理解二重积分的几何意义:我会通过画图…

【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LeetCode——二叉树的非递归遍历

144. 二叉树的前序遍历 给你二叉树的根节点root,返回它节点值的前序遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输入&#xff1…

PDF怎么转CAD文件?(免费!高效转换方法汇总)

一般而言,PDF图纸是不能修改的。若需修改,则需将PDF转CAD,此时如何满足PDF转CAD的需求呢?今天,我将教你两种免费的PDF转CAD的方法,助力高效办公。 1.本地软件转换法 这是用本地软件转换方法,支…

JVM之GC日志解读

通过阅读Gc日志,我们可以了解Java虚拟机内存分配与回收策略。 内存分配与垃圾回收的参数列表 -XX:PrintGC 输出GC日志。类似:-verbose:gc-XX:PrintGCDetails 输出GC的详细日志-XX:PrintGCTimestamps 输出GC的时间戳(以基准时间的形式&#xf…

软件企业利用ChatGPT的正确姿势

先来看一下现在市场环境 ChatGPT作为现象级产品横空出世之后,极大地带动了大语言模型产业和生成式AI(AIGC)产业的蓬勃发展。海外市场上,OpenAI、微软、谷歌、Meta等巨头动作频频。中国市场更是风起云涌,百度、阿里、华…

Golang每日一练(leetDay0034) 二叉树专题(3)

目录 100. 相同的树 Same Tree 🌟 101. 对称二叉树 Symmetric Tree 🌟 102. 二叉树的层序遍历 Binary Tree Level-order Traversal 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一…

Talk预告 | 清华大学交叉信息研究院助理教授赵行:基于视觉感知的自动驾驶运动预测

本期为TechBeat人工智能社区第481期线上Talk! 北京时间3月15日(周三)20:00,清华大学交叉信息研究院助理教授——赵行的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “基于视觉感知的自动驾驶运动预测”,届时将…

AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?

ACT | SIM | ETC | FTG | RAC AVG | RPG | FPS | MUG | PUZ ACT、SIM、ETC、FTG、RAC、RTS、STG、AVG、RPG、FPS、MUG、PUZ、SLG、SPG等游戏类型,需要高性能的计算机来支持运行。为了满足这些游戏的需求,国内服务器厂商不断推出新的产品,采用…

AD20的PCB布线规则设定

目录 1、最小安全间距 2、线宽规则 3、过孔 4、盖油工艺设计 5、内电层焊盘模式设置 6、反焊盘间距设计 7、焊盘与覆铜连接类型 AD20的规则库设定是PCB布线的首要工作,在布线初期就要设置好,布线的过程中还需要动态的变更,因此本篇总结了PCB的…

基于逻辑回归构建肿瘤预测模型

使用逻辑回归构建肿瘤预测模型 描述 乳腺癌数据集包括569个样本,每个样本有30个特征值(病灶特征数据),每个样本都属于恶性(0)或良性(1)两个类别之一,要求使用逻辑回归&…

九龙证券|服务器龙头获资金连续抢筹,尾盘主力抢筹前期大热门股

今天,核算机职业取得主力大手笔抢筹。 今天主力资金净流出53.89亿元,其间创业板净流出3.19亿元,沪深300成份股净流出7.61亿元。 申万一级职业中,今天有19个职业上涨,传媒职业接连两日均涨近5%,居首位&…