大数据 - HBase《一》- Hbase基本概念

news2025/1/16 5:46:50

目录

1.1. Hbase简介

1.2 Hbase,Hive, Mysql对比

1.3 Hbase数据模型

🥙region(区域)

🥙rowkey(行键)

🥙列族(column family)

🥙列(column Qualifier)

🥙版本(version)-默认按时间戳去区分版本

🥙cell(存储单元)

🥙Store

Hbase定位如何定位一条数据?

1.4 Hbase架构模型

🥙zookeeper作用

🥙HMaster作用

🥙HRegionServer作用

Region 

HLog

HDFS

1.5 Hbase百亿数据秒级查询的秘密


1.1. Hbase简介

H-Hadoop,base-database,故名思意Hbase就是Hadoop的数据库

HBase是一种NoSQL(非关系)型的数据库,面向列进行存储。利用HDFS作为文件存储系统

1.2 Hbase,Hive, Mysql对比

  • Hive是计算框架,不是数据库

  • Mysql是数据库,它的数据是落在磁盘上的,并不适用于海量数据的存储

  • Hbase的数据是存在hdfs上的,如果把数据落在磁盘上,那他就和mysql差不多

1.3 Hbase数据模型

Hbase是非关系型数据库,所以并没有事务、索引等机制。

🥙region(区域)

HBase 中的数据存储被划分为多个 Region,每个 Region 负责存储一定范围的数据。当数据量增加时,Region 会自动切分为更小的 Region,以便保持数据的均衡分布和高效访问。

🥙rowkey(行键)

在 HBase 中,每一行数据都由一个唯一的 Rowkey 来标识。Rowkey 是一个字节数组,通常用于按照字典顺序对数据进行排序和存储,以便快速查找和访问数据。

🥙列族(column family)

HBase是列式存储,就是以列族(Column Family)为基本单位进行数据的存储。每个列族包含多个列(Column Qualifier),它们共享相同的前缀。列族在创建表时需要预先定义,并且在表的生命周期内不能更改。

在存储时,一个store对应于一个列族在磁盘上的存储结构,所以一般把数据相关性大的归为一个列族,一般数据划分三四个列族就够了

🥙列(column Qualifier)

列(Column Qualifier)是 HBase 表中的基本数据单元,它包含在列族(Column Family)中。每个列都与一个值相关联,可以存储任意类型的数据。列的名称是一个字节数组,通常用于表示属性或特征。

列族下有任意列,每行的列都可以不相同。但是在企业中列族下面有哪些列都是提前约定好的

🥙版本(version)-默认按时间戳去区分版本

HBase 中的数据是按照版本进行存储的。每次写入数据时,都会附加一个时间戳作为版本标识。默认情况下,HBase 使用时间戳来区分不同版本的数据。可以在读取数据时指定版本号,以获取特定版本的数据。

Hbase里面的数据是多版本的,比如zs前两年用的手机号是一个版本,后续换了一个手机号

🥙cell(存储单元)

在 HBase 中,每个单元格(Cell)存储一个特定的数据项,它由行键、列族、列标识和时间戳组成。每个单元格可以包含多个版本的数据,版本之间通过时间戳进行区分。

🥙Store

Store 是 HBase 中存储数据的物理存储单元,对应于一个列族(Column Family)在磁盘上的存储结构。每个列族包含一个或多个 Store,每个 Store 包含一个或多个 HFile 文件,用于存储数据。

Store属于region,一个region里面有多个store

 

Hbase 名称空间-->表-->region-->row(row_key column_family(cell(qualifier-value)))

Hbase定位如何定位一条数据?

一行数据有一个行键叫做rowkey,可以有若干个列族,每一个列族下面有若干个列,每个列中的数据存储支持多个版本(version)

所以,在Hbase中定位一条数据需要通过:Rowkey->Column Family->Column Qualifier->Version

1.4 Hbase架构模型

 

HBase集群主要由HMaster、RegionServer和Zookeeper组成

🥙zookeeper作用

HBase通过Zookeeper来完成集群内各种机制的协调工作。主要工作职责如下:

  • 选举HMaster:保证任何时候,集群中只有一个Master.实现HMaster主从节点的failover.

  • 监控HRegionServer:实时监控HRegionServer的状态,将HRegionServer的上下线实时报告给HMaster.

  • 维护元数据和集群配置:存放整个HBase集群的元数据以及集群的状态信息,包括:

    • 存储所有HRegion的寻址入口,存储所有的元数据信息

    • 存储HBase的Schema,包括有哪些Table,每个Table有哪些Column Family.

 

🥙HMaster作用

(分配数据到底存储在哪个Region server中)

  • 管理和分配Region, 比如在Region split时分配新的region,在RegionServer退出时迁移其内的Region到其他RegionServer上。

  • 负责管理Region server,实现负载均衡

  • 发现失效的Regionserver并通过拆分LOG重新分配其上的region

  • 管理用户对table定义的各类DDL操作

 

🥙HRegionServer作用

  • 管理master为其分配的Region

  • 处理来自客户端的读写请求

  • 负责和底层HDFS的交互,存储数据到HDFS

  • 负责Region变大以后的拆分

  • 负责Storefile的合并工作(StoreFile是抽象的,文件的引用形式)

  • 负载均衡的事情

  • 管理表的片段数据(region)

 

Region 

一个HRegionServer包含了多个HRegion。HBase将表中的数据基于RowKey的不同范围划分到不同的HRegion上,每个HRegion都负责一定范围的数据存储和访问。

HRegion是HBase中分布式存储和负载均衡的最小单元,不同的HRegion可以分布在不同的HRegionServer上。每个表一开始只有一个HRegion,随着数据不断插入表,HRegion不断增大,当增大到指定阈值(10G)的时候,HRegion就会等分成两个HRegion,切分后其中一个HRegion会被转移到其他的HRegionServer上,实现负载均衡。

当Table中的行不断增多,就会有越来越多的Region.为了防止前期数据的处理都集中在一个HRegionServer,我们可以根据自己的业务进行预分区。

这样即使有一张百亿条数据的表,由于数据被划分到不同的HRegion上,每个HRegion都可以独立地进行读写,HBase读写数据的时候还可以与多HRegion分布式并发操作,所以访问速度并不会太大的降低。

 

HLog

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

HDFS

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

比如:MySQL数据直接落入磁盘,HBase数据落入HDFS,HDFS数据落入磁盘。

1.5 Hbase百亿数据秒级查询的秘密

假设我们有100亿数据,大约10T,我们创建表时采用预分区的手段,假设有2000HRegion,一个HRegion 5G,我们只需要找这5G数据就可以找到user-1.

一个HRegion有多个store,一个store对应一个列族,我们要查询的列肯定在一个列族中。假设我们这张表被我们分了3个列族,一个store差不多是1.7G,我们只需要找这1.7G数据就可以找到user-1.

一个store分为0个或多个storeFile(HFile),一个StoreFile是100M,大约20个,为了公平20/2=10.我们只需要找这1G数据就可以找到user-1.

storeFile中文又是KV映射的数据,按照1:20的比例。我们只需要找这80M数据就可以找到user-1.

机械键盘差不多是100M/s,固态更不用说了,所以这就是HBase百亿数据秒级查询的秘密。

 

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

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

相关文章

如何仅用3行代码,搞定业务敏感数据加解密?

01 引子:一个数据安全的故事 一个风和日丽的早上,某家快递物流公司内。 张老板看着电脑屏幕,眉头紧锁。电脑屏幕上赫然写着,“疑似45亿条个人信息泄露,电商物流行业数据安全警铃再响”。据传,…

代码学习记录18

随想录日记part18 t i m e : time: time: 2024.03.13 主要内容:今天的主要内容是二叉树的第七部分,主要涉及二叉搜索树的最近公共祖先 ;二叉搜索树的最近公共祖先;删除二叉搜索树中的节点 。 23…

国内使用GPT4的5种解决方案,最后一个是全场最佳

ChatGPT4是目前世界上最先进的自然语言处理模型 大家都知道ChatGPT4特别好用 我个人来说,基本上每天都会用GPT来查资料、写代码和润色文章 但是在国内,使用ChatGPT4,是有一定门槛的 门槛一 mo法问题 ChatGPT的网站,国内是无法访问…

javaEE13(网站第8章两个课后题)

1、对“jspservletjavabean实现分页查询”功能做如下补充: (1)记录批量删除:每个记录前添加复选框,点击批量删除,删除选中记录。 增加跳转到任意页功能。用户可改变每页记录条数。 页面&am…

ImportError: Plotly express requires pandas to be installed.

在 Python3 环境下,使用 plotly 绘图时,发生了如下错误: ImportError: Plotly express requires pandas to be installed. 通过排查发现是使用了折行导入时报错的: import plotly.express as px 通过检索找到了解决办法&#xff0…

VScode Error Lens插件

安装完成之后,当我们输入一些错误的语法格式的时候,它都会有一些提示! 一开始是英文提示 修改为中文提示 设置搜索 typescript.local

【gpt实践】李某的AI课程值199吗

先说个人的答案:不值。但也不是说毫无价值,只是他的价值没那么高。 文末分享该课程,大家有兴趣可以看看,该课程是否有价值。 “清华博士”推出的199元的AI课程销售额竟然突破了5000万。这一数字让人惊叹,也引发了人们…

免费AI软件开发工具测评:iFlyCode VS CodeFlying

前言 Hello,各位看官,今天为大家带来两款人工智能的软件开发工具的测评,他们分别是iFlyCode和CodeFlying,我相信当大家看到这两款产品名字的时候不禁都会有些好奇,两个产品都有Code 和Fly两个元素,那他们之…

Consul 配置持久化

当我们在consul的key-value中配置了几个字段 访问后的结果: 但是当我们在控制台输入命令重启consul服务后: consul agent -dev 刚刚设置的key-value值便消失不见了 此时就要进行 consul 持久化配置. 第一步:在consul文件夹下创建 1.空文件夹mydata 2.新建文件consul_star…

电脑截图的方式有哪些?

针对使用电脑截图,可以下个截图软件,到目前位置感觉用得不错的是Snipaste这一款,看下图所示。下载链接 Snipaste - 截图 贴图 需要根据自己的电脑配置,选择下载对应的版本。就不详细介绍怎么安装了。 具体操作:在电脑…

在linux上部署yolov5和安装miniconda3

第一步:安装miniconda3 官网:Miniconda — Anaconda documentation 这四个命令快速而安静地安装最新的64位版本的安装程序,然后自行清理。要为Linux安装Miniconda的不同版本或体系结构,请在wget命令中更改.sh安装程序的名称。 …

安卓 OpenGL ES 学习笔记

文章目录 OpenGL 学习笔记OpenGL 是什么?OpenGL ES是什么?怎么用?hello world如何实现动画效果 参考文章 OpenGL 学习笔记 OpenGL 是什么? OpenGL(Open Graphics Library)是一个跨平台的图形编程接口&…

MySQL8 设置大小写敏感

问题描述 今天对我本地的数据库迁移服务器上,完成之后启动项目报错 说数据库中不存在 quartz_LOCKS 这张表 我打开服务器上面的数据上面展示的表名是 quartz_LOCKS,然后通过查询 lower_case_table_names 配置可知 show variables like lower_case_tabl…

图片格式转换怎么操作?这一个方法快快收藏

图片格式转换能够改变图片的质量、大小兼容性。不同的图片格式用途也不同,当我们需要转换图片格式的时候要怎么操作呢?下面,小编给大家分享一款操作简单,小白也能轻松上手的图片转换器(https://www.yasuotu.com/geshi&…

[ThinkPHP]Arr返回1

$detailId (int)Arr::get($detail, null); var_dump($detailId); 打印结果:int(1) 原因: vendor/topthink/think-helper/src/helper/Arr.php

Spring启动“--”设置参数没生效

现象 在idea中启动SpringBoot项目时,使用“--”设置的启动参数没有生效,如修改端口号“--server.port8082” 原因 排查发现是因为在使用SpringApplication.run启动项目时,没有将args参数传入run方法。 修复方案 SpringApplication.run参数中…

【漏洞复现】宏景HCM downlawbase SQL注入漏洞

0x01 产品简介 宏景人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景HCM downlawbase 接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令&…

综合实验---Web环境搭建

题目: 服务器IP地址规划:client:12.0.0.12/24,网关服务器:ens36:12.0.0.1/24、ens33:192.168.10.1/24,Web1:192.168.10.10/24,Web2:192.168.10.20/24&#xf…

53、WEB攻防——通用漏洞CRLF注入URL重定向资源处理拒绝服务

文章目录 CRLF注入原理&检测&利用URL重定向web拒绝服务 CRLF注入原理&检测&利用 URL重定向 就是url中存在urlhttps://xxx,重定向的页面没有限制。主要用来做钓鱼。 web拒绝服务 例如,图片的长宽参数由前端传入,恶意的数据…

vmware虚拟机命令安装Vmware tools

安装Vmware tools sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools-desktop