HBase非关系型数据库

HBase非关系型数据库

  • 1 什么是HBase
  • 2 HBase的特点
  • 3 什么时候需要HBase
  • 4 HBase的数据模型
  • 5 HBase架构
    • 5.1 架构
    • 5.2 HBase如何列式储存
  • 6 如何正确设计RowKey

1 什么是HBase

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式数据库。HBase是一个NoSQL数据库,把数据存在HDFS上,低成本来存储海量的数据并且支持高并发随机写和实时查询。
HBase 的原型: Google 的 BigTable 论文

2 HBase的特点

大:一个表可以有数百亿行,百万列;
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:HBase中的数据都是字符串,没有类型;

3 什么时候需要HBase

为海量数据而生,在需要实时读写、随机访问超大规模数据集时,可以使用HBase。但是不支持随机修改,查询效率低,对小文件支持不友好。

其他储存为什么不行?

MySQL是单机的。MySQL能存储多少数据,取决于那台服务器的硬盘大小。
Kafka可以存储很大的数据,且是分布式的(很方便的扩展)。但是持久化了的数据,最常见的用法就是重新设置offset,做「回溯」,无法单独查询某个数据。
Redis是缓存数据库,所有的读写都在内存中,速度快。AOF/RDB存储的数据都会加载到内存中,Redis不适合存大量的数据(因为内存太贵了!)
Elasticsearch是一个分布式的搜索引擎,主要用于检索。理论上Elasticsearch也是可以存储海量的数据(分布式),我们也可以将数据用『索引』来取出来。但是如果我们的数据没有经常「检索」的需求,其实不必放到Elasticsearch,数据写入Elasticsearch需要分词,无疑会浪费资源。

每个column family存储在HDFS上的一个单独文件中,空值不会被保存。Row Key 和 Version number在每个 column family中均有一份;
HBase 为每个值维护了多级索引,即:<Rowkey, column family, column name, timestamp>。逻辑数据模型中空白cell在物理上是不存储的,因为根本没有必要存储,但是,如果不指明时间,将会返回最新时间的行,每个最新的都会返回。

4 HBase的数据模型

在这里插入图片描述
HBase表的每一行中,列的组成都是灵活的,行与行之间的列不需要相同,一个列族下可以任意添加列,不受任何限制:
在这里插入图片描述
数据写到HBase的时候都会被记录一个时间戳,这个时间戳被我们当做一个版本。比如说,我们修改或者删除某一条的时候,本质上是往里边新增一条数据,记录的版本加一了而已。在读的时候按照时间戳读最新的记录。在外界「看起来」就是把这条记录改了。
在这里插入图片描述
HBase本质上其实就是Key-Value的数据库,Key由RowKey(行键)+ColumnFamily(列族)+Column Qualifier(列修饰符)+TimeStamp(时间戳–版本)+KeyType(类型)组成,而Value就是实际上的值。

5 HBase架构

5.1 架构

在这里插入图片描述
1、Client客户端,它提供了访问HBase的接口,并且维护了对应的cache来加速HBase的访问。
2、Zookeeper存储HBase的元数据(meta表),无论是读还是写数据,都是去Zookeeper里边拿到meta元数据告诉给客户端去哪台机器读写数据
3、HRegionServer它是处理客户端的读写请求,负责与HDFS底层交互,是真正干活的节点。
大致的流程:client请求到Zookeeper,然后Zookeeper返回HRegionServer地址给client,client得到Zookeeper返回的地址去请求HRegionServer,HRegionServer读写数据后返回给client。

4、写数据的时候是先写到内存(见下面的Store内),为了防止机器宕机,内存的数据没刷到磁盘中就挂了。我们在写Mem store的时候还会写一份HLog。
5、HMaster会处理 HRegion 的分配或转移。如果我们HRegion的数据量太大的话,HMaster会对拆分后的Region重新分配RegionServer。(如果发现失效的HRegion,也会将失效的HRegion分配到正常的HRegionServer中)HMaster会处理元数据的变更和监控RegionServer的状态。

  • RegionServer 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下:
    1. 对于数据的操作:get, put, delete;
    2. 对于 Region 的操作:splitRegion、compactRegion。
  • Master 是所有 RegionServer 的管理者,其实现类为 HMaster,主要作用如下:
    1. 对于表的操作:create, delete, alter
    2. 对于 RegionServer的操作:分配 regions 到每个 RegionServer,监控每个 RegionServer 的状态,负载均衡和故障转移。
  • Zookeeper 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。
  • HDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用的支持。

5.2 HBase如何列式储存

  • HRegion
    HBase一张表的数据会分到多台机器上。用RowKey来切分到不同的HRegionHRegion属于某个HRegionServer,一个HRegionServer可以有多个HRegion)
  • Store
    HRegion下面有Store,一个列族的数据存储在一个Store

所以,在物理存储层面,一个列族的数据是存储在一起的 – HBase是基于列族存储的。

  • Store
    HBase在写数据的时候,会先写到MemStore,当MemStore超过一定阈值,就会将内存中的数据刷写到硬盘上,形成StoreFile,而StoreFile底层是以HFile的格式保存,HFile是HBase中KeyValue数据的存储格式。
    所以说:MemStore我们可以理解为内存 buffer,HFile是HBase实际存储的数据格式,而StoreFile只是HBase里的一个名字。

6 如何正确设计RowKey

RowKey是会按字典序排序的,我们HBase表会用RowKey来横向切分表。无论是读和写我们都是用RowKey去定位到HRegion,然后找到HRegionServer。定位HRegionServer的时候,实际上就是定位我们这个RowKey在不在这个HRegion的start-key和end-key范围之内,如果在,说明我们就找到了。

在HBase里边提供了三种的查询方式:

  1. 全局扫描
  2. 根据一个RowKey进行查询
    对RowKey散列,分配到HRegion的时候就比较均匀,要避免热点的问题。
  3. 根据RowKey过滤的范围查询

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

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

相关文章

Java并发编程: AQS

文章目录 一、前置知识二、什么是AQS三、使用AQS框架的锁和同步器1、ReentrantLock2、ReentrantReadWriteLock3、CountDownLatch4、CyclicBarrier5、Semaphore&#xff1a;信号量 四、锁和同步器的关系1、锁&#xff1a;面向锁的使用者2、同步器&#xff1a;面向锁的实现者 五、…

Material UI 5 学习03-Text Field文本输入框

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Text Field文本输入框 一、最基本的本文输入框1、基础示例2、一些表单属性3、验证 二、多行文本 一、最基本的本文输入框 1、基础示例 import {Box, TextField} from "…

九、ELMo 语言模型

ELMo&#xff08;Embeddings from Language Models&#xff09;兼顾了两个问题&#xff1a;一是词语用法在语义和语法上的复杂特点&#xff1b;二是随着语言环境的改变&#xff0c;这些用法也应该随之改变&#xff0c;解决多义词的问题。 ELMo 语言模型原理图&#xff1a; ELMo…

Matlab如何批量读取Excel数据?科研效率UpUp第3期

上一篇文章中&#xff0c;讲了如何批量统计一组Excel数据中多个站位所有物种的数量之和&#xff08;Matlab如何高效统计多站数据中各站目标总数&#xff1f;科研效率UpUp第2期&#xff09;。 进一步&#xff0c;假如我们有多组Excel数据&#xff0c;也就是多个Excel表格&#…

【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-先导篇)

专栏系列文章推荐&#xff1a; 2024高级系统架构设计师备考资料&#xff08;高频考点&真题&经验&#xff09;https://blog.csdn.net/seeker1994/category_12601310.html 案例分析篇01&#xff1a;软件架构设计考点架构风格及质量属性&#xff08;2024年软考高级系统…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Navigation)

Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏、内容区和工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&#xff08;NavDestination的子组件…

使用 Amazon Bedrock 和 RAG 构建 Text2SQL 行业数据查询助手

背景 随着企业数据量的持续增长&#xff0c;如何让非技术人员也能轻松分析数据、获得商业洞察成为了当前的痛点。本文将介绍如何使用亚马逊云科技的大语言模型服务 Amazon Bedrock 以及 RAG (Retrieval Augmented Generation)&#xff0c;实现 Text2SQL 功能&#xff0c;以此为…

图论(二)之最短路问题

最短路 Dijkstra求最短路 文章目录 最短路Dijkstra求最短路栗题思想题目代码代码如下bellman-ford算法分析只能用bellman-ford来解决的题型题目完整代码 spfa求最短路spfa 算法思路明确一下松弛的概念。spfa算法文字说明&#xff1a;spfa 图解&#xff1a; 题目完整代码总结ti…

C#/WPF 清理任务栏托盘图标缓存

在我们开发Windows客户端程序时&#xff0c;往往会出现程序退出后&#xff0c;任务还保留之前程序的缓存图标。每打开关闭一次程序&#xff0c;图标会一直增加&#xff0c;导致托盘存放大量缓存图标。为了解决这个问题&#xff0c;我们可以通过下面的程序清理任务栏托盘图标缓存…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-1、线条平滑曲面(原始图形)

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fr…

案例分析篇03:一篇文章搞定软考设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12601310.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

WorkPlus Meet提供高度安全的私有化会议解决方案,保护企业隐私

在企业内部沟通和机密信息传递方面&#xff0c;保护企业的隐私和保证会议质量是至关重要的。作为一款私有化会议解决方案&#xff0c;WorkPlus Meet以其卓越的性能和高度安全的特性&#xff0c;助力企业建立安全可靠的私有化会议平台。 为何选择WorkPlus Meet作为私有化会议的安…

Editor.md-编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

msfconsole中db_namp的使用方法以及如何让msf连接数据库

一、db_nmap使用方法 1.打开数据库 1.1查看数据库postgresql连接状态 systemctl status postgresql查看数据库postgresql连接状态、 1.2启动postgresql systemctl start postgresql启动postgresql 1.3初始化 msfdb init初始化 2.C段扫描(db_nmap的使用) 2.1 db_nmap -sP 192…

多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介…

wxss和css的区别

目录 1. 语法差异 2. 尺寸单位 3. 样式导入 WXSS 示例代码&#xff1a; CSS 示例代码&#xff1a; 4. 组件和属性的支持 总结 WXSS (WeiXin Style Sheets) 和 CSS (Cascading Style Sheets) 都是用于描述文档样式的语言&#xff0c;但它们在微信小程序和网页开发中有一些…

部署私有KMS服务器,并设置自动激活Windows和office

介绍 vlmcsd是一个KMS激活服务器的模拟器&#xff0c;可以在Windows Server之外的平台上部署自己的KMS服务器。它是一个开源项目&#xff0c;由Wind4开发&#xff0c;目前在Linux上运行&#xff08;包括Android、FreeBSD、Solaris、Minix、Mac OS、iOS和Windows等&#xff09;…

基于cnn的卷机神经网络的项目毕业课题实践应用(毕业选题-深度学习-卷及神经网络)

这些项目可以作为毕业课题选择&#xff0c;共计超过20个&#xff1a; 往期热门项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别…

OSI七层模型TCP四层模型横向对比

OSI 理论模型&#xff08;Open Systems Interconnection Model&#xff09;和TCP/IP模型 七层每一层对应英文 应用层&#xff08;Application Layer&#xff09; 表示层&#xff08;Presentation Layer&#xff09; 会话层&#xff08;Session Layer&#xff09; 传输层&#x…

javaEE11(servlet课后习题1,3(将思路实现一下))

1.在第5章课后习题2基础上&#xff0c;基于jspservletjavabean实现学生表的增删改查。 数据处理交给Servlet package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.an…