【大数据分析】Hbase的基本原理

目录

  • Hbase 架构
    • Client
    • ZooKeeper
    • Master
    • RegionServer
    • HRegion
    • Store
    • MemStore
    • StoreFile
    • HFile
    • HLog
  • Hbase数据模型
    • 关于数据模型的其他概念
      • Name Space
      • Table
      • Row
      • Column
      • Time Stamp
      • Cell

Hbase 架构

在这里插入图片描述

Client

(1).META.表,记录了用户所有表拆分出来的 Region 的映射信息,.META.可以有多个Region。
(2)-ROOT- 表,记录了 .META. 表的 Region 信息,-ROOT- 自身只有一个 Region,无论如何不会分裂。
Client 访问用户数据前需要首先访问ZK,找到 -ROOT- 表的 Region 所在的位置,然后访问 -ROOT- 表,接着访问 .META. 表,最后找到具体的数据的位置。

ZooKeeper

(1)为 HBase 提供 Failover 机制,选举 Master ,避免 Master 单点故障。
(2)存储所有 Region 的寻址入口:-ROOT- 表在哪台服务器上。-ROOT- 这张表的位置信息。
(3)实时监控 RegionServer 的状态,将 RegionServer 的上线和下线信息实时通知给 Master 。
(4)存储 HBase 的 schema,包括有哪些 table,每个table有哪些Column Family。

Master

(1)为 RegionServer 分配 Region。
(2)负责 RegionServer 的负载均衡。
(3)发现失效的 RegionServer 并重新分配其中的 Region。
(4)HDFS 上的垃圾文件(HBase)回收。
(5)处理 schema 更新请求(表的创建,删除,修改,列簇的增加等等)。

RegionServer

(1)RegionServer 维护Master分配给它的 Region,处理对这些 Region 的 IO 请求。
(2)RegionServer 负责切割变得过大的 Region,负责 Compact 操作。
(3)Client 访问 HBase 上的数据的过程并不需要 master(寻址时访问的是 zookeeper 和 RegionServer,数据读写访问的是 RegionServer)。Master 仅仅维护 Table 和 Region 的元数据信息,负载很低。
(4).META.存的是所有 Region 的位置信息,那么 RegionServer 当中 Region 在进行分裂之后产生的心 Region,由 master 决定发到哪个 RegionServer,这意味着,只有 Master 知道新的 Region 的位置信息,所以由 Master 来管理 .META. 这个表中数据的 CRUD。

HRegion

(1)table 在行的方向上分割为多个 Region。Region 是 HBase 中分布式存储和负载均衡的最小单元,即不同的 region 可以分别在不同的 RegionServer 上,但同一个 Region 不会拆分到多个 server 上。
(2)随着 Region 不断增大,某个列族达到一个阈值时,就会分成两个新的 Region。
(3)每个 Region 由以下信息标识:<表名,startRowkey,创建时间>,再由(-ROOT-和.META.)记录该region的endRowkey。

Store

每一个 Region 由一个或多个 Store 组成,至少是一个 store,hbase 会把一起访问的数据放在一个 store 里面,即为每个 ColumnFamily 建一个 store,如果有几个 ColumnFamily,就有几个 store。一个 store 由一个 memStore 和多个 StoreFile 组成。HBase 以 store 的大小来判断是否需要切分 Region。

MemStore

memStore 是放在内存里的,用于保存修改的数据。当 memStore 的大小达到一个阈值(默认128M)时,memStore 会被 flush 到文件,即生成一个快照。

StoreFile

memStore 内存中的数据写到文件后就是 StoreFile,StoreFile 底层是以 HFile 的格式保存

HFile

HBase中Key - Value数据的存储格式,HFile 是 Hadoop 的二进制格式文件,实际上 StoreFile 就是对 Hfile 做了轻量级包装,即 StoreFile 底层就是 HFile

HLog

用于做灾难恢复,HLog记录数据的所有变更,一旦 RegionServer 宕机,就可以从 Log 中进行恢复。

Hbase数据模型

在这里插入图片描述
每个store是以行为单位进行列式存储,如图蓝色标识出来的数据,它每一列的数据都会按照[Row Key,Column Key,Column Qualifier,Time Stamp,Type,Value]的方式被存成一行。

Hbase的底层依赖HDFS,而HDFS不支持修改,那我们怎么修改呢?实际上是假修改,实际是新增了一行,比如上图的phone,只是时间戳变了,我们读的时候读最新的时间戳的数据。

关于数据模型的其他概念

Name Space

命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase中存放的是Hbase内置的表,default表是用户默认使用的命名空间

Table

类似于关系型数据库的表概念。Hbase定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。

Row

Hbase表中的每行数据由一个RowKey和多个Column组成,数据是按照RowKey的字典顺序存储的,查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要,HBase支持3中查询方式:1、基于Rowkey的单行查询;2、基于Rowkey的范围扫描;3、全表扫描。

Column

Hbase中的每个列都由Column Family(列族)和Column Qualifier(列限定符,就是列名)进行限定。

Time Stamp

用于标识数据的不同版本(Version),每条数据写入时,系统会自动为其加上该字段,其值为写入HBase的时间,我们修改后读的最新数据就是通过时间戳确定。

Cell

由<rowkey,column family,column qualifier,time stamp>唯一确定的单元。cell中的数据全部是字节码形式存储。

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

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

相关文章

Redis数据类型之(哈希Hash和集合Set)

Redis数据类型之&#xff08;哈希Hash和集合Set&#xff09; 一定注意看红色注意项。 哈希&#xff08;Hash&#xff09;: Redis hash 是一个 string 类型的 field&#xff08;字段&#xff09; 和 value&#xff08;值&#xff09; 的映射表&#xff0c;hash 特别适合用于存…

龙芯2K1000实战开发-USB/PCIe/HDMI外设开发

文章目录 概要整体架构流程技术名词解释技术细节小结概要 提示:这里可以添加技术概要 本文主要针对2k1000的PCIE和USB外设的国产化设计 整体架构流程 提示:这里可以添加技术整体架构 使用2k1000自带的以太网pcie控制器,USB控制器。 考虑到龙芯没有HDMI接口,选用龙讯半…

springboot启动过程原理分析

前言 现在绝大多数java项目都上了Springboot框架, 因此深入理解Springboot框架的运行原理,能帮助我们更好的在Springboot框架下进行业务开发,同时能学习框架中优秀的设计思想, 本文主要是通过对Springboot源码的分析, 来理解整个springboot项目的启动流程. 因为Springboot不同…

AdaIN

AdaIN的全名是Adaptive Instance Normalization&#xff0c;源自风格迁移的论文Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 假设原图和风格图经过VGG进行特征提取后得到shape分别为CxHxW和CxH‘xW’的特征图c和s&#xff0c;AdaIN的计算如…

JDBC查询数据库——普通、流式、游标

问题 通过JDBC对MySQL进行数据查询时&#xff0c;有个很容易踩的坑&#xff0c;以下面代码为例&#xff1a; public static void selectNormal() throws SQLException{Connection connection DriverManager.getConnection("jdbc:mysql://localhost:3306/test", &qu…

被迫在小公司熬了2年,现在我终于进了腾讯测试岗...

其实两年前校招的时候就往腾讯投了一次简历&#xff0c;结果很明显凉了&#xff0c;随后这个理想就被暂时放下了&#xff0c;但是这个种子一直埋在心里&#xff0c;想着总有一天会再次挑战的。 其实这两年除了工作以外&#xff0c;其余时间基本上都在学习&#xff0c;打磨自己…

Burp模块

Target模块 记录流量 1.Target按主机或域名分类记录 2.HTTP History 按时间顺序记录且会记录很多次 3.Target模块的作用 &#xff08;1&#xff09;把握网站的整体情况 &#xff08;2&#xff09;对一次工作的域进行分析 &#xff08;3&#xff09;分析网站存在的攻击面 …

从C语言到C++_14(vector的常用函数+相关选择题和OJ题)

目录 1. vector的常用函数 1.1 vector 的介绍 1.2 vector 的初始化 1.3 vector 的操作和遍历 1.4 vector 的容量和增删查改 2. vector 相关笔试题 3. vector 相关OJ题 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 解析代码&#xff1a; 118. 杨辉…

详解iPaaS与RPA的区别及各自的应用场景

随着企业数字化转型的加速&#xff0c;业务系统集成和自动化流程成为关键议题。本文旨在探讨iPaaS&#xff08;Integration Platform as a Service&#xff09;与RPA&#xff08;Robotic Process Automation&#xff09;在业务系统集成方面的区别&#xff0c;它们各自的用途和适…

Web端3D模型轻量化工具如何实现建筑行业“数字化”建设?

随着数字化技术的飞速发展&#xff0c;建筑行业也在不断寻找新的技术手段来提供高产能和建筑质量。其中&#xff0c;Web端3D模型轻量化工具HOOPS Communicator SDK在建筑行业中的应用不断地得到了市场的广泛注意和应用。本文将深入探讨HOOPS Communicator在建筑行业中的应用及其…

【Redis】浅谈Redis-集群(Cluster)

文章目录 前言1、集群实现1.1 创建cluster目录&#xff0c;并将redis.conf复制到该文件夹1.2 复制redis.conf&#xff0c;并进行配置1.3 启动redis&#xff0c;查看启动状态1.4 合成集群1.5 查看集群1.6 集群读写操作 2、SpringBoot整合redis集群2.1 引入包2.2 设置配置2.3 使用…

Codeforces Div.2 1798B Three Sevens题解

题目&#xff1a; 传送门 B. Three Sevens time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Lottery "Three Sevens" was held for m days. On day i, ni people with the numbers ai,1…

职场工作的前提

职场工作 目录概述需求&#xff1a; 设计思路实现思路分析1.职场工作 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive.…

CompletableFuture的简单使用

原文地址&#xff1a;CompletableFuture原理与实践-外卖商家端API的异步化 CompletableFuture的介绍&#xff1a; CompletableFuture是Java 8中引入的一种基于Future的异步编程机制。与传统的Future相比&#xff0c;CompletableFuture提供了更多的操作链支持&#xff0c;并且…

企业级信息系统开发——Spring Boot加载自定义配置文件

文章目录 一、使用PropertySource加载自定义配置文件&#xff08;一&#xff09;创建Spring Boot Web项目ConfigDemo01&#xff08;二&#xff09;创建自定义配置文件&#xff08;三&#xff09;创建自定义配置类&#xff08;四&#xff09;编写测试方法&#xff08;五&#xf…

实验9 分类问题

1. 实验目的 ①掌握逻辑回归的基本原理&#xff0c;实现分类器&#xff0c;完成多分类任务&#xff1b; ②掌握逻辑回归中的平方损失函数、交叉熵损失函数以及平均交叉熵损失函数。 2. 实验内容 ①能够使用TensorFlow计算Sigmoid函数、准确率、交叉熵损失函数等&#xff0c;…

【一次调频】考虑储能电池参与一次调频技术经济模型的容量配置方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

web服务器有哪些

<1>什么是web服务器 “网络服务”&#xff08;Web Service&#xff09;的本质&#xff0c;就是通过网络调用其他网站的资源。 Web Service架构和云 如果一个软件的主要部分采用了”网络服务”&#xff0c;即它把存储或计算环节”外包”给其他网站了&#xff0c;那么我…

关于机器人状态估计(15)-VIO与VSLAM精度答疑、融合前端、主流深度相机说明与近期工程汇总

VIOBOT种子用户有了一定的数量&#xff0c;日常大家也会进行交流&#xff0c;整理总结一下近期的交流与答疑。 VIO-SLAM(作为三维SLAM&#xff0c;相对于Lidar-SLAM和LIO-SLAM)在工程上落地的长期障碍&#xff0c;不仅在算法精度本身&#xff0c;还有相对严重的鲁棒性问题&…

【Redis25】Redis进阶:分布式锁实现

Redis进阶&#xff1a;分布式锁实现 锁这个概念&#xff0c;不知道大家掌握的怎么样。我是先通过 Java &#xff0c;知道在编程语言中是如何使用锁的。一般 Java 的例子会是操作一个相同的文件&#xff0c;但其实我们知道&#xff0c;不管是文件&#xff0c;还是数据库中的一条…