HBase数据模型与整体架构

article/2025/9/11 12:11:54

目录

1.HBase的特点

2.HBase数据模型

2.1.HBase逻辑架构

2.2.HBase物理存储

3.HBase整体架构


HBase原理深入: HBase原理深入_李嘉图呀李嘉图的博客-CSDN博客

HBase优化:https://blog.csdn.net/qq_42029989/article/details/126607734

1.HBase的特点

  • 海量存储: 底层基于HDFS存储海量数据
  • 列式存储:HBase表的数据是基于列族进行存储的,一个列族包含若干列
  • 极易扩展:底层依赖HDFS,当磁盘空间不足的时候,只需动态增加DataNode服务节点
  • 高并发:支持高并发的读写请求
  • 稀疏:稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
  • 数据的多版本:HBase表中的数据可以有多个版本值,默认情况下是根据版本号去区分,版本号就是插入数据的时间戳
  • 数据类型单一:所有的数据在HBase中是以字节数组进行存储

2.HBase数据模型

2.1.HBase逻辑架构

2.2.HBase物理存储

概念描述

NameSpace

(数据库)

命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。一个表可以自由选择是否有命名空间,如果创建表的时候加上了命名空间后,这个表名字以:作为区分!
Table类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,数据属性,比如超时时间(TTL),压缩算法(COMPRESSION)等,都在列族的定义中定义,不需要声明具体的列。

Row

(一行逻辑数据)

HBase表中的每行数据都由一个RowKey和多个Column(列)组成。一个行包含了多个列,这些列通过列族来分类,行中的数据所属列族只能从该表所定义的列族中选取,不能定义这个表中不存在的列族,否则报错NoSuchColumnFamilyException。

RowKey

(每行数据主键)

Rowkey由用户指定的一串不重复的字符串定义,是一行的唯一标识!数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。如果使用了之前已经定义的RowKey,那么会将之前的数据更新掉!

Column Family

(列族)

列族是多个列的集合。一个列族可以动态地灵活定义多个列。表的相关属性大部分都定义在列族上,同一个表里的不同列族可以有完全不同的属性配置,但是同一个列族
内的所有列都会有相同的属性。列族存在的意义是HBase会把相同列族的列尽量放在同一台机器上,所以说,如果想让某几个列被放到一起,你就给他们定义相同的列
Column
Qualifier(列)

Hbase中的列是可以随意定义的,一个行中的列不限名字、不限数量,只限定列族。因此

 列必须依赖于列族存在

 列的名称前必须带着其所属的列族

例如   info:name,info:age

TimeStamp

(时间戳--》版本)

用于标识数据的不同版本(version)。时间戳默认由系统指定,也可以由用户显式指定。在读取单元格的数据时,版本号可以省略,如果不指定,Hbase默认会获取最后一个版本的数据返回
Cell 一个列中可以存储多个版本的数据。而每个版本就称为一个单元格(Cell)。

Region

(表的分区)

Region由一个表的若干行组成!在Region中行的排序按照行键(rowkey)字典排序。Region不能跨RegionSever,且当数据量大的时候,HBase会拆分Region。

3.HBase整体架构


Zookeeper

  • 实现了HMaster的高可用
  • 保存了HBase的元数据信息,是所有HBase表的寻址入口
  • 对HMaster和HRegionServer实现了监控

HMaster(Master)

  • 为HRegionServer分配Region
  • 维护整个集群的负载均衡
  • 维护集群的元数据信息
  • 发现失效的Region,并将失效的Region分配到正常的HRegionServer上

HRegionServer(RegionServer)

  • 负责管理Region
  • 接受客户端的读写数据请求
  • 切分在运行过程中变大的Region

Region

  • 每个HRegion由多个Store构成,
  • 每个Store保存一个列族(Columns Family),表有几个列族,则有几个Store,
  • 每个Store由一个MemStore和多个StoreFile组成,MemStore是Store在内存中的内容,写到文件后就是StoreFile。StoreFile底层是以HFile的格式保存。 


http://chatgpt.dhexx.cn/article/7F4inVTi.shtml

相关文章

数据结构与算法--图的深度优先搜索 (DFS)

深度优先搜索即是 从起点出发,从规定的方向中选择一个不断往前走,走到头为止,然后尝试另一种方向直到最后的终点。 DFS解决的是连通性问题,即从A是否能到达B。 采用DFS进行遍历的话,必须依赖栈,后进先出。 …

国际经济学——期末复习

这里写自定义目录标题 李嘉图模型相对价格与供给贸易所得相对工资多种、连续产品的拓展其他概念 专用要素模型孤立经济的情况在国际贸易中贸易模式影响 Heckscher-Ohlin模型要点表述 中略新贸易理论垄断竞争模型(1979)CES效用函数规模报酬递增由于不考所以只写重要结论和推导思…

经济学中的李嘉图模型

前言 因为模型里要用到很多数学推导,所以这篇文章用word写成。然后再截图发上来 原文楼主放在百度网盘里了,链接如下: https://pan.baidu.com/s/14sxnllQ44Wu88moH5_NzTw 定义 一个简单的基础模型 引入技术优势 一个极端的假设 悖论 贸易的…

java中Long型和long型的比较大小

一. Long数据的大小的比较 对于Long类型的数据&#xff0c;这个数据是一个对象&#xff0c;所以对象不可以直接通过“>”,“”&#xff0c;“<”的比较&#xff0c;如果要比较两个对象的是否相等的话&#xff0c;我们可以用Long对象的.equals&#xff08;&#xff09;方…

【Java】Long型与String型互转

String转Long Long.valueOf(str)Long.parseLong(str) Long转String String.valueOf(num)Long.toString(num) import java.util.Arrays; import java.util.List;public class Test {public static void main(String[] args) {String str "100";Long one Long.va…

Long型数据精度丢失问题

数据库中有一个bigint类型数据&#xff0c;对应java后台类型为Long型&#xff0c;在某个查询页面中碰到了问题&#xff1a;页面上显示的数据和数据库中的数据不一致。例如数据库中存储的是&#xff1a;1475797674679549851&#xff0c;显示出来却成了1475797674679550000&#…

vue前端处理后台返回的Long型数据精度丢失

vue前端处理后台返回的Long型数据精度丢失 问题描述 开发时后端返回的id为Long型&#xff0c;结果发现俩id怎么会一样呢&#xff1f;如下图是控制台Preview返回的数据 正以为是后端那边数据有误时&#xff0c;我点开Response发现这边的id是正常的… Preview和Response的数据…

C语言中的long型是究竟占4个字节还是8个字节?

今天在复习C语言的时候踩了一个很有意思的坑。 #include <stdio.h>int main() {printf("long int : %d\n", sizeof(long));return 0; }上面是我在IDE中使用的测试代码&#xff0c;执行它我的第一反应是会得到 4 的长度。 但实际的结果如下图所示&#xff1a;…

c java long_C语言中输出long long型数据怎么输出

展开全部 C语言中输出long long型数据使用%lld格式输出的方法: 1、32313133353236313431303231363533e59b9ee7ad9431333366303761 long long 是C99标准对整型类型做的扩展,每个long long类型的变量占8字节,64位。其表示范围为-9223372036854775808~9223372036854775807。 2、…

解决问题:long型数据精度丢失

在数据库中id设置为bigint且自增在java中对应long型数据 而在前台传输过程中键值过长导致精度丢失 原因是JS内置number类型的安全整数是53位&#xff0c;而Long为8个字节64位&#xff0c;会发生精度丢失 解决办法1&#xff1a; 点击设计表查看选项&#xff0c;发现自动递增数字…

浏览器接收Long型数据精度丢失问题的解决方案

问题描述 当我们后端返回前端Long类型的数据时&#xff0c;后三位会变成0&#xff0c;导致精度丢失。 有意思的地方是&#xff0c;postman测试接口时&#xff0c;查看返回值精度并未丢失&#xff0c;是字符串。 解决方案 在需要保留精度的属性上使用JsonSerialize(using To…

long型长整数字在前端页面显示异常及其解决方法

文章目录 1.引子2.解决问题&#xff08;1&#xff09;初试EL表达式取long型数值&#xff08;2&#xff09;再探EL表达式取字符串格式long型数值&#xff08;3&#xff09;最后一试---给EL表达式加引号 3.总结 1.引子 在做项目中&#xff0c;发现了一个诡异的事情&#xff0c;后…

long 型应该加上 l或者L

Long类型定义数字的L或LL后缀 如果数字后面不加L&#xff0c;默认的取值范围是int&#xff08;整型&#xff09; 比如&#xff1a; 给a赋值&#xff1a;long a&#xff1d;2147483648; &#xff08;数字超出int型取值范围&#xff09; 给a赋值&#xff1a;long a&#xff1…

JAVA生成20位LONG型UUID

编者在开发过程中用postman测试接口&#xff0c;发现要求id为必填且不能含有英文字母&#xff0c;问了对面开发人员才知道需要自己生成20位Long型uuid&#xff0c;写法大概如下&#xff0c;在需要生成的部分调用这个类即可。 package nc.bs.task.util;import java.text.Simple…

解决页面js接受Long型损失精度问题

目录 一、场景描述 二、问题分析 三、解决方法 一、场景描述 在下面这个后台管理中&#xff0c;当我们点击禁用后&#xff0c;会向服务器发送一个请求&#xff0c;同时携带这个员工的19位数字的id。 请求方式为PUT 这里的禁用对应employee表中的status字段&#xff0c;1为启…

java long格式化输出_C语言中输出long long型数据怎么输出?

展开全部 C语言中输出long long型数据使用%lld格式输出的e68a843231313335323631343130323136353331333365633838方法&#xff1a; 1、 long long 是C99标准对整型类型做的扩展&#xff0c;每个long long类型的变量占8字节&#xff0c;64位。其表示范围为-9223372036854775808~…

long型数字计算

在进行以亿为单位的数字计算时&#xff0c;int型往往会有溢出的问题&#xff0c;这时我们需要使用long型数字进行计算 public class demo04 {public static void main(String[] args) {//JDK7新特性&#xff0c;数字之间可以用下划线分割int money 10_0000_0000;int years 2…

随机游走模型(RandomWalk Mobility)

随机游走模型由首先由爱因斯坦在1926年以数学方式描述。由于自然界中的许多实体会以不可预知的方式移动&#xff0c;因此随机游走模型用来描述这种不稳定的移动。在这种移动模型中&#xff0c;移动节点随机选择一个方向和速度来从当前位置移动到新的位置。新的速度和方向分别从…

随机游走和趋势指标

简介 掷硬币游戏很久以来就存在了。让我们来玩这个游戏,不过目的在于测试并理解 FOREX 市场中的技术交易机制。我们并不是第一个将硬币拿在手中的人。那些希望更加详细地学习概率论的人可以参考 William Feller 所写的《An Introduction to Probability Theory and Its Appli…