【HBase入门与实战】一文搞懂HBase!_hbase入门与实践_hbase实战-程序员宅基地

技术标签: 2024年程序员学习  数据库  hbase  大数据  

微服务和高并发:随着传统开发逐渐转向微服务架构,面向"老百姓"的应用需要处理的并发量急剧增加。在这种高并发环境下,传统关系型数据库在增删改查操作上的速度往往跟不上项目的需求。

传统开发解决高并发的策略:
在这里插入图片描述

  • ① 将数据库中的数据定期存储到Redis中,后端查询操作直接面向Redis来执行。
  • ② 构建数据库的Redis的集群化。

引入HBase的原因:当Redis的存储能力不足或主从结构过于复杂导致效率下降,Hbase成为一个优秀的选择。HBase以其【快速的读写速度】和【高吞吐量】,能够有效且快速地处理大数据的增删改查操作。

HBase特点:

  • ① 高吞吐量的读写操作
  • 为什么HBase有快速的读写速度(高吞吐量)?
  • 写操作:
  • 内存写入:所有的写操作首先被写入到MemStore中,这一操作是在内存中完成的,高效。并且对于HBase而言,只要数据写入MemStore存储区就标志着写操作已经完成,无需等待落盘。
  • 数据备份:在数据刷新到磁盘之前,所有的写操作都会被记录在Hlog,即使故障,也能够恢复数据。
  • 并行写操作:HBase的每个列族对应一个MemStore,能够对不同列族的数据进行并行处理。
    在这里插入图片描述
  • 如何理解"无需暂停写入操作以等待数据落盘"的设计理念?
  • MemStore提供了一种暂存数据的方式,直至数据被刷新到磁盘上的StoreFile中。
  • 通过WAL机制保证MemStore在数据未落盘时发生故障也不会导致数据丢失。
  • 保障数据一定能够落盘(即使数据丢失也可以通过HLog恢复数据),此时可以认为操作已经完成。
  • 因此写入的数据得到保障后,允许系统在高吞吐量的情况下继续接受和处理新的写请求。
  • 读操作:
  • 读操作可以直接从内存中的MemStore或者是缓存中的BlockCache获取数据
  • 使用Bloom Filter检查所需的数据是否不在StoreFile中,如果数据不在那里,能够及时终止读操作,避免了不必要的磁盘访问。
  • (为什么Bloom Filter能够实现快速检查的功能?BloomFilter的算法原理。)
  • ② HBase天生支持集群部署,无需进行复杂的分表或者分库操作。简化了大规模数据处理的复杂性。
  • ③ HBase是列式存储
  • 列式存储和行式存储的理解
  1. 定义
  • 列式存储是指每一列的数据存储在一起。
  • 行式存储是指每一行的数据存储在一起。
  1. 列式存储的优势
  • 高效的数据存储:当查询特定列的数据(字段)时,数据库可以直接访问这部分连续存储的数据。(相当于索引)
  • 对于复杂的分析查询通常只关注数据集中的特定几列,列式存储能够只读取必要的列。
  • 压缩与优化:同类型的数据便于压缩与优化。
  • 减少冗余:如果存在某部分列数据缺失,则可以在列存储时不存储该部分的值。
    HBase 列族:列族是列的逻辑分组,同个列族的所有列存储在一起。

二、了解NoSQL的概念

NoSQL(Not Only SQL):非关系型数据库

NoSQL 与 RDBMS 的区别:
在这里插入图片描述

  • 数据模型
  • 非关系型 VS 关系型
  • 查询语言
  • 不使用SQL,有独特指令。
  • 可【伸缩性】和【可用性】问题
  • 伸缩性
  • 数据分裂【伸】和 分布式架构
  • 文件合并【缩】
  • 数据分裂
  • 数据分裂是HBase中自动管理数据存储容量的一种机制。
  • 当表初始创建时,可能只有一个Region。随着数据量的不断增加,一个HBase表的数据量可能会增长到超出单个Region的承载能力。
  • 为了有效管理这种情况,HBase通过数据分裂自动地将表分割为N部分,每个Region包含一部分的数据。
  • Region:
  • HBase的基本存储单元,由一系列行组成,内部的数据是按照行键(row key)排序的。
  • 自动分裂:
  • Region大小达到的分裂阈值、RegionServer的数量都可以进行配置。(RegionServer的数量可以进行手动添加)
  • 得到的新Region可以被分配到新的RegionServer上(保证负载均衡)
  • 分裂的缺陷:分裂阶段处于阻塞状态,往里面写数据可能会导致数据丢失。
  • 【优化:可以通过预分裂的方式确定数据规模大概需要分为多少个Region,并在相应的HRegionServer中提前建好Region,就无需做分裂了。能够大大提高写的效率】
  • 分裂的过程是由HMaster主导,告诉该台HRegionServer应该迁移到哪一台不同的服务器上面。并且会在HMaster中存储元数据信息的表中记录某张HBase表的数据分别存储在哪几台RegionServer中的哪几个Region?
  • 文件合并:
  • min_compact:
  • 合并较小的、最近生成的HFiles
  • 不会丢弃任何删除标记的数据(即使数据被标记为删除,物理上仍然存在于合并过后的文件中)
  • major_compact:
  • 合并一个表中的所有HFiles
  • 会彻底删除标记为删除的数据
  • 通常是手动触发
  • compact后的数据【实际存储】在HDFS上,小的HFile应该远小于128M
  • 分布式架构
  • HBase表:抽象概念,物理存储上被细分为多个Region。
  • Region:数据存储和访问的基本单元。
  • RegionServer:运行在集群中的服务器,负责管理和服务其上存储的一个或多个Region。
  • HBase采用的是典型的Master/Slave架构。HBase Master负责管理表和Region的元数据信息,以及RegionServer的负载均衡。而RegionServers负责处理客户端的读写请求,并管理存储在其上的Regions。
  • 可用性
  • ZooKeeper实现了Client和HMaster之间的协调管理
  • HLog(WAL:Write Ahead Log 当数据写入具体的磁盘之前,先将其写一份在日志文件上)
  • HLog能够将死去的RegionServer"复活",获取其原来的表数据。
  • 当HRegionServer死的时候,则将HLog的数据迁移到另一台服务器上。
  • 而数据迁移又依靠HMaster,因此HMaster也需要容灾机制,则出现了HMaster Backup和ZooKeeper进行协调管理。
  • 如果ZooKeeper和HMaster之间心跳"断"了,则启用HMaster Backup.
  • 事务性
  • NoSQL 更加注重 性能、扩展性、灵活性,不像RDBMS一样强调原子性或一致性。
  • 一致性问题
    在这里插入图片描述
  • 发生场景:通常发生在实时数仓。
  • 批处理:规定记录数达到一定值才发送,可能导致时效性差(前后两条记录的时间间隔长)。
  • 流处理:采用每隔一段时间(水位线)就进行数据发送的策略。面临的挑战是如何确保在时间范围内的数据都被纳入处理。
  • 解决方案:允许一定的延迟(例如,计算3秒内的数据,但结果会在5秒内出来),这是为了等待那些符合时间范围但尚未被处理的数据。
  • 流批一体:流处理和批处理结合的处理模式(Flink)
  • 侧输出流:
  • 为了保证最终一致性,对因延迟未能纳入批次的数据放入侧输出流中。
  • 例如:如果在一个设定的时间窗口(如秒级窗口)内,某些数据未能被处理,这些数据就可以被放入侧输出流中。随后,可以在一个更长的时间窗口(如分钟窗口)内对这些数据进行处理。
  • 实时数仓 VS 离线数仓
  • 数据准确性:离线数仓高于实时数仓
  • 时间范围:
  • 实时数仓的时间范围:秒、分、时、天
  • 离线数仓的时间范围:天、周、月、年
  • 数据校准:
  • 可以使用离线数仓的数据去校准实施数仓中同维度的数据(如天),以检测实时数仓的实时性。
  • 这种校准通常使用大量模拟数据进行。

三、NoSQL、BI、大数据的关系

  • BI:商务智能
  • 它是一套完整的解决方案
  • BI应用设计模型,模型依赖于模式
  • BI主要支持标准SQL(RDB)
  • 难在业务掌握和熟悉的能力
  • NoSQL和大数据相关性较高,但是NoSQL!=大数据
  • NoSQL主要帮助大数据解决数据存储问题

四、HBase概述

  1. 定义
  • 是一个面向列存储的NoSQL数据库
  • 是一个分布式HashMap,底层数据是Key-Value格式
  • 使用HDFS作为存储并利用其可靠性什么是【分布式HashMap】?
    HashMap的本质是用一个简单的值形式映射一个复杂的值形式。
    HBase通过一个RowKey提取该RowKey下多个列族下多个列的多个值。
    在这里插入图片描述
  1. 特点
  • 数据访问速度快,响应时间约2~20ms。
  • 实时数仓和离线数仓都会用到HBase:
  • 实时数仓
  • 响应速度快
  • 离线数仓
  • 宽表列存储
  • 支持随机读写,每个节点20k~100k+ ops/s
  • 哈希表也可以随机读写
  • 可扩展性
  • 对Hadoop,1个NameNode只能带1024(实际1009)台DataNode
  • 但是HBase可以扩展到20000+节点
  • 高并发
  1. HBase的物理架构
    在这里插入图片描述
    在这里插入图片描述

这张图描述了HBase的物理架构,主要包括以下几个部分:

  • Client: 客户端,用于与Zookeeper和HMaster进行交互。
  • Zookeeper: 用于维护HBase集群的状态和元数据信息。(协调 管理)
  • HMaster: HBase集群的主控制节点,负责监控集群状态和管理区域服务器(RegionServer)。
  • HRegionServer: 区域服务器,负责存储和管理HBase数据。每个RegionServer管理着多个HRegion。
  • HRegion: 表的水平分区,一个Region包含一个或多个MemStore和多个StoreFile。
  • MemStore: 内存存储区,用于缓存新写入的数据。
  • StoreFile: 持久化存储文件,用于存储从MemStore刷新的数据。
  • HFile: StoreFile中的底层物理文件,实际存储数据。
  • DFS Client: 与底层HDFS集群交互的客户端。
  • HDFS: 底层的分布式文件系统,用于持久化存储HBase数据。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-xnITAk6J-1712542833484)]

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_84181125/article/details/137497953

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签