大数据技术原理与应用期末复习-知识点(二)
HBASE
Hbase与传统关系数据库的对比分析
1.数据类型:
关系型数据库采用关系模型
Hbase采用更简单的数据模型(把数据存储为未经解释的字符串)
2.数据操作:
关系数据库:增删改查等
Hbase:插入 查询 删除 清空 (通常只采用单表的主键查询)
3.存储模式:
关系数据库:行模式
Hbase:列模式
4.数据索引:
关系数据库:复杂的多个索引
Hbase:只有一个索引-行键
5.数据维护:
关系数据库:新值覆盖旧值,被覆盖后不存在
Hbase:不删除旧版本,而是生辰新版本
6.可伸缩性:
关系数据库:难实现横向扩展和纵向扩展
Hbase:灵活的横向扩展
Hbase相关概念
Hbase是一个稀疏、多维、持久化存储的映射表
采用 行键、列族、限定符、时间戳进行索引
每个值都是未经解释的字节数组byte[]
表(Table)
想象一下,整个图书馆就是一个巨大的表。在这个图书馆里,我们把所有关于同一类主题的书放在同一个区域。例如,所有的科幻小说可能都在一个特定的区域。这个区域就可以比作是HBase中的一个“表”。每个表用来存储特定类型的数据集合。
行键(Row Key)
每一本书都有一个独一无二的编号,这个编号帮助我们快速找到这本书的位置。在HBase中,行键就是每一行数据的唯一标识符,它决定了数据存放在哪里以及如何排序。就像图书馆里的每本书都有唯一的编号一样,每一行数据也有唯一的行键。
列族(Column Family)
继续我们的图书馆比喻,假设图书馆内有多个不同的分类,比如科幻、历史、艺术等。每个分类可以看作是一个列族。列族是用来组织相似或相关的列(属性)。例如,在用户信息表中,你可能会有一个包含基本信息(如姓名、年龄)的列族和另一个包含地址信息的列族。这有助于提高读写效率和数据压缩。
列限定符(Column Qualifier)
如果我们进一步细分,每个分类下的书还可以根据更具体的属性来区分,比如作者名、出版年份等。在HBase中,这些具体的属性被称为列限定符。它们定义了列族内的具体列,用来存储特定的信息片段。例如,在"个人信息"列族下,你可以有"名字"、“性别”这样的列限定符。
单元格(Cell)
现在,考虑一本书的具体内容,比如说《1984》这本书的具体信息,包括它的标题、作者、出版日期等等。在HBase中,每一个具体的值就叫做单元格。它是行键、列族、列限定符和时间戳共同确定的一个位置上的数据项。
时间戳(Timestamp)
最后,假设每次当你借阅一本书时,图书馆都会记录这次借阅的时间。同样的,HBase也为每一个单元格存储了一个时间戳,表示该数据被写入的时间。这样可以支持版本控制,即对于同一个行键、列族和列限定符组合,可以保存多份不同时间点的数据副本。
数据坐标的概念
HBase 中需要根据行键、列族、列限定符和时间戳来确定一个单元格,所以视为一个“四维坐标”
[行键,列族,列限定符,时间戳]
视图
概念视图
想象一下你正在设计一个全新的图书馆。首先,你需要考虑的是这个图书馆将要存放什么类型的书籍和资料,以及如何组织这些信息才能让读者最方便地找到他们需要的东西。这种高层次的设计就是概念视图。它描述了数据的整体结构,包括有哪些表、每个表里应该包含哪些列族和列限定符等。简单来说,概念视图是你对数据结构的理想化设想,而不涉及具体实现细节。

物理视图
接下来,当你真正开始建造图书馆时,你得决定书架放在哪里,书怎么摆放才能最大化空间利用,并确保快速查找。这就是物理视图,它涉及到实际存储数据的方式。在HBase中,物理视图决定了数据是如何分布在集群中的各个节点上的,比如通过行键的范围分割成多个区域(Region),每个区域都由特定的服务器管理。

面向列的存储
假设你希望你的图书馆非常特别,它不是按整本书来排列,而是把每一本书的内容拆分开,按照章节或者段落的主题来组织。比如所有关于“魔法”的段落都被放在一起,不论它们来自哪本书。这种方式可以极大地方便那些只对某一特定主题感兴趣的读者。
与传统的关系型数据库(如MySQL)不同,它们是面向行的存储,即一行数据的所有字段都会被连续地存储在一起;
而HBase采用的是面向列的存储方式,意味着相同列的数据会被一起存储。
Hbase的实现原理
功能组件
库函数、一个Master主服务器、多个Region服务器
表和region

Region定位
每个region都有一个regionID来标识唯一性
Hbase三层结构

Hbase的运行机制

Region服务器的工作原理
region服务器是最核心的一块。用户读写数据,缓存刷新,StoreFile合并
1. Region分配
首先,就像图书馆会把不同类型的书放在不同的书架上一样,HBase会将一张表的数据分成多个部分,这些部分叫做Region。每个Region服务器可以管理多个Region,并且每个Region都包含了一定范围内的行数据。当一个新的Region需要被创建或现有Region需要重新分配时,有一个专门的服务器(称为HMaster)会负责协调这些Region在各个Region服务器之间的分配。
2. 客户端请求处理
每当有用户想要查询或更新某些数据时,就相当于读者来找管理员借书或还书。这时,Region服务器就会接收到来自客户端的请求。根据请求的内容,Region服务器可能会执行以下几种操作之一:
- 读取数据:如果用户想查看某条记录,Region服务器会在其管理的Region中查找相应的数据并返回给用户。
- 写入数据:当用户要添加新数据或修改已有数据时,Region服务器会先将更改暂时保存在一个内存结构(称为MemStore)中,然后定期地把这些更新持久化到硬盘上的文件系统中。
- 删除数据:类似于从书架上移除一本书,Region服务器会标记某些数据为“已删除”,但不会立即物理删除它们;相反,这些标记会在后续的清理过程中被处理掉。
3. 数据存储与管理
Region服务器不仅负责处理实时请求,还承担着管理和维护数据的任务。具体来说:
- MemStore:这是位于内存中的缓存区,用于暂存新插入或更新的数据。一旦MemStore满了,它的内容就会被刷新到硬盘上的文件中。
- StoreFile:每当MemStore的内容被刷写到磁盘后,它们会以文件的形式存储下来,这些文件被称为StoreFile。随着时间推移,同一个Region可能会积累多个StoreFile。
- Compaction(合并):为了提高性能和节省空间,Region服务器会定期对StoreFiles进行合并操作。这个过程会清理掉那些已被标记为删除的数据,并将多个小文件合并成更大的文件,从而减少文件数量并优化读取效率。
4. 故障恢复机制
最后,考虑到任何硬件都有可能出现故障,HBase设计了容错机制来保证即使某个Region服务器发生故障,也不会导致数据丢失。所有写入的数据都会首先记录在一个叫做WAL(Write-Ahead Log,预写日志)的日志文件里。如果Region服务器意外宕机,可以通过重放WAL中的记录来恢复未完成的操作。
NOSQL
NOSQL的特点
1.灵活的可扩展性
2.灵活的数据模型
3.与云计算紧密融合
NOSQL兴起的原因
关系数据库无法满足Web2.0的需求 NoSQL 数据库应运而生,它很好地满足了 Web 2.0 的需求,得到了 市场的青睐
关系数据库在Web2.0不适用的原因
1.无法满足海量数据的管理需求
2.无法满足数据高并发的需求
3.无法满足高可扩展性和高可用性的需求
NOSQL和关系数据库的对比


NOSQL的四大类型





NOSQL的三大基石
CAP,BASE,最终一致性
CAP

最多只能满足其中两个

BASE
有ACID四性:
A:原子性(要么全执行,要么全不执行)
C:一致性(保持一致状态)
I:隔离性
D:持久性(出现致命故障也保持修改)
BASE的基本含义是:基本可用、软状态、最终一致性
BASE的三个状态
1. 基本可用(Basically Available)
- 含义:即使系统的一部分出现问题,整个系统仍然可以继续工作,只是可能有些服务或功能会受到限制。
- 例子:假设你们点餐后,餐厅的打印机坏了,不能打印订单。但是服务员可以用手写的方式记录你们的订单,并且厨房也能够根据这些手写订单做菜。虽然过程慢了一点,但餐厅的服务并没有完全停止。
2. 软状态(Soft State)
- 含义:系统的状态可以在一段时间内发生变化,而不必立即反映所有更新。换句话说,系统不必实时保持最新状态。
- 例子:你们点了饮料,服务员记下了你们的订单并告诉了酒吧。然而,在酒吧开始准备之前,如果你们改变了主意想要换一种饮料,这个变化不会立刻同步给酒吧,直到服务员再次通知他们。这段时间内,酒吧持有的是“软状态”,即不是最新的、绝对正确的状态。
3. 最终一致性(Eventual Consistency)
- 含义:随着时间推移,系统中的所有副本都将收敛到相同的状态。尽管中间可能会有一段时间数据不一致,但最终所有节点上的数据都会变得一致。
- 例子:当你们更改了饮料选择,服务员最终会将新的选择传达给酒吧,确保你们得到的是最新要求的饮料。即使在这期间有延迟,最终你们拿到的饮品还是会符合最后的选择。
MapReduce
MapReduce的输入输出

MapReduce的各个执行阶段(过程)
1.MapReduce 框架使用 InputFormat 模块做 Map 前的预处理,然后将输入文件切分为逻辑上的多个 InputSplit
2.通过 RecordReader(RR)根据 InputSplit 中的信息来处理 InputSplit 中的具体记录,加载数据并将其转换为适合 Map 任务读取的键值对,输入给 Map 任务
3.Map 任务会根据用户自定义的映射规则,输出一系列的作为中间结果
4.Shuffle过程:对 Map 的输出进行一定的分区、 排序、合并、归并等操作,得到形式的中间结果,再交给对应的 Reduce 来处理
5.Reduce 以一系列中间结果作为输入,输出结果交给 OutputFormat 模块
6.OutputFormat 模块会验证输出目录是否已经存在,以及输出结果类型是否符合配置文件 中的配置类型,如果都满足,就输出 Reduce 的结果到分布式文件系统
Shuffle过程详解

相关文章:
大数据技术原理与应用期末复习-知识点(二)
HBASE Hbase与传统关系数据库的对比分析 1.数据类型: 关系型数据库采用关系模型 Hbase采用更简单的数据模型(把数据存储为未经解释的字符串) 2.数据操作: 关系数据库:增删改查等 Hbase:插入 查询 删…...
高效准确的PDF解析工具,赋能企业非结构化数据治理
目录 准确性高:还原复杂版面元素 使用便捷:灵活适配场景 贴心服务:快速响应机制 在数据为王的时代浪潮中,企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速,企业所积累的数据量呈爆炸式增长…...
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
一、介绍 栈和队列是限定插入和删除只能在表的“端点”进行的线性表,是线性表的子集,是插入和删除位置受限的线性表。 (操作受限的线性表) 二、栈 1)概念: 栈(stack)是一个特殊的线性表,是限…...
读书笔记~管理修炼-缄默效应
缄默效应:学会正确批评下属 员工明明犯了错误,却不及时告知你,总是拖到最后一刻无法弥补时才不得不承认出了问题——你遇到过这样的问题吗? 这其实是缄默效应在发挥作用。 在职场中,即使再扁平化的环境&…...
视频会议系统会前预约模块必须包含哪些功能?
视频会议系统会前预约模块必须包含哪些功能? 视频会议系统的会前预约模块是企业高效管理会议资源、提升会议效率的重要工具。一个完善的会前预约模块必须包含一系列功能,以确保会议的顺利进行和资源的合理分配。以下是对视频会议系统会前预约模块必须包…...
RabbitMQ中的Topic模式
在现代分布式系统中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理,支持多种消息传递模式,其中 Topic 模式 是一种灵活且强大的模式,允许生产者…...
tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录
目录 tslib的简介tslib的源码和make及make install后得到的文件下载tslib的主要功能tslib的工作原理tslib的核心组成部分tslib的框架和核心函数分析tslib的框架tslib的核心函数ts_setup()的分析(对如何获取设备名和数据处理流程的分析)函数ts_setup()自身的主要代码ts_setup()对…...
Ubuntu vi(vim)编辑器配置一键补全main函数
1.打开对应的配置文件 vi ~/.vim/snippets/c.snippets 2.按G将光标定位到文件末尾 3.按i进入插入模式 以tab键开头插入下的内容,空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后,插入模式输入 main 然后按tal键就能补全了...
验证码机制
偶然间看到了验证码机制,顺便总结一下: 首先,验证码是从后端生成的,随机生成; 【后端永远认为前端有可能会被伪造】 1.后端调用相关的绘图第三方类库,或是(平台PHP、.NET、java)系…...
【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE
大多数开发人员都同意,与 15 年前相比,PHP 是一种更加理智、更加安全和可靠的语言。PHP5早期的不良设计已让位于更好的开发生态系统,其中包括类、自动加载、更严格的类型、更理智的语法以及一大堆其他改进。安全性也没有被忽视。 register_globals一些老读者可能还记得和的…...
使用FakeSMTP创建本地SMTP服务器接收邮件具体实现。
以下代码来自Let’s Go further节选。具体说明均为作者本人理解。 编辑邮件模版 主要包含三个template: subject:主题plainBody: 纯文本正文htmlBody:超文本语言正文 {{define "subject"}}Welcome to Greenlight!{{end}} {{def…...
【网络安全】逆向工程 练习示例
1. 逆向工程简介 逆向工程 (RE) 是将某物分解以了解其功能的过程。在网络安全中,逆向工程用于分析应用程序(二进制文件)的运行方式。这可用于确定应用程序是否是恶意的或是否存在任何安全漏洞。 例如,网络安全分析师对攻击者分发…...
Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置
目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...
arcgisPro将面要素转成CAD多段线
1、说明:正常使用【导出为CAD】工具,则导出的是CAD三维多线段,无法进行编辑操作、读取面积等。这是因为要素面中包含Z值,导出则为三维多线段数据。需要利用【复制要素】工具禁用M值和Z值,再导出为CAD,则得到…...
相机内外参知识
已知相机的内外参数矩阵,可以求得相机在世界坐标系下的原点坐标。这里需要理解几个概念: 内参数矩阵(Intrinsic Matrix): 描述相机本身的属性,比如焦距、主点位置等。外参数矩阵(Extrinsic Matrix…...
从代币角度介绍solana账户体系
1、solana 的账户概念介绍 Solana的账户体系是其区块链的核心组成部分,它允许数据和价值在链上存储和转移。以下是Solana账户体系的一些关键特点: • 账户模型: • 在Solana上,所有数据都存储在所谓的“账户”中,类似…...
前端引入字体文件
1. 字体下载 阿里矢量图图标库地址 https://www.iconfont.cn/,页面打开后选中,素材库 > 字体库 左侧两个标签页可以切换,右侧放大镜图标可以搜索自己需要的字体 字体预览区域可以自行调整进行字体预览 右上角点击字体包下载,下…...
qemu启动后网络怎么设置?配合qemu-system-riscv64的命令设置
QEMU启动的时候,可以选择组网方式,一般有两种选择,user模式和tap模式 user模式就是用NAT,tap模式就是用bridge网桥模式。以前也有过一次实践:FreeBSD RISCV 在QEME中实践-网络配置_pkg.txz: not found-CSDN博客 user…...
如何测量分辨率
一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…...
汇总贴:cocos creator
1 cocoscreator-doc-TS:目录-CSDN博客 访问节点和组件 常用节点和组件接口 创建和销毁节点 加载和切换场景 获取和设置资源 监听和发射事件 节点系统事件 缓动系统(cc.tween) 使用计时器 使用对象池 使用 TypeScript 脚本 模块化脚本 脚本执行顺序 全局…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
