【HBase入门与实战】一文搞懂HBase!_hbase入门与实践,2024年最新如何成为杰出的程序员

	- 保障数据一定能够落盘(即使数据丢失也可以通过HLog恢复数据),此时可以认为操作已经完成。
	- 因此写入的数据得到保障后,允许系统在高吞吐量的情况下继续接受和处理新的写请求。
+ 读操作:


	- 读操作可以直接从内存中的MemStore或者是缓存中的BlockCache获取数据
	- 使用Bloom Filter检查所需的数据是否不在StoreFile中,如果数据不在那里,能够及时终止读操作,避免了不必要的磁盘访问。
	- (为什么Bloom Filter能够实现快速检查的功能?BloomFilter的算法原理。)
  • ② HBase天生支持集群部署,无需进行复杂的分表或者分库操作。简化了大规模数据处理的复杂性。

  • ③ HBase是列式存储

    • 列式存储和行式存储的理解
      1. 定义
        • 列式存储是指每一列的数据存储在一起。
        • 行式存储是指每一行的数据存储在一起。
      2. 列式存储的优势
        • 高效的数据存储:当查询特定列的数据(字段)时,数据库可以直接访问这部分连续存储的数据。(相当于索引)
        • 对于复杂的分析查询通常只关注数据集中的特定几列,列式存储能够只读取必要的列。
        • 压缩与优化:同类型的数据便于压缩与优化。
        • 减少冗余:如果存在某部分列数据缺失,则可以在列存储时不存储该部分的值。
          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下多个列族下多个列的多个值。
      在这里插入图片描述
  2. 特点

    • 数据访问速度快,响应时间约2~20ms。
    • 实时数仓和离线数仓都会用到HBase:
      • 实时数仓
        • 响应速度快
      • 离线数仓
        • 宽表列存储
    • 支持随机读写,每个节点20k~100k+ ops/s
      • 哈希表也可以随机读写
    • 可扩展性
      • 对Hadoop,1个NameNode只能带1024(实际1009)台DataNode
      • 但是HBase可以扩展到20000+节点
    • 高并发
  3. 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数据。

箭头表示各组件之间的交互和数据流向:

  • Client与Zookeeper和HMaster交互,用于读写数据。
  • HMaster管理和监控RegionServer。
  • RegionServer管理MemStore和StoreFile,用于读写数据。
  • MemStore中的数据定期刷新到StoreFile。
  • StoreFile的数据持久化存储在HDFS上

各组件的作用

  • HMaster

    • 是HBase集群的主节点,可以配置多个,用来实现HA
      • 一般backup-masters并不配置主机器(master01)
    • 处理元数据的变更
      • HBase元数据:
        • 命名空间名字、表名字、列族的名字、列族内部的schema…
    • 监控RegionServer
    • 负责RegionServer的负载均衡(分裂时告知将新增数据迁移到哪台RegionServer)
    • 处理RegionServer故障转移
    • 通过ZooKeeper发布自己的位置到客户端
  • RegionServer

    • 负责管理维护Region,负责存储HBase实际数据

      • 一个RegionServer包含一个Hlog,一个BlockCache,多个Region(可以是一张表,也可以是不同的表)
      • HFile和HLog作为序列化文件保存在HDFS上
      • Client直接与RegionServer进行交互
    • 功能

      • 负责管理HBase的实际数据
      • 处理分配给它的Region
      • 刷新缓存到HDFS
      • 维护HLog
      • 执行Compaction
      • 负责处理Region分片
    • 读写缓存

      • 读缓存:BlockCache
        • 将最近或频繁访问的数据块(blocks)缓存到内存中,HBase可以快速响应读请求。
      • 写缓存:MemStore
        • 暂存写入数据,直至达到一定的阈值,然后批量写入磁盘,形成新的StoreFile(HFile)
  • Bloom Filter

    • 快速确定数据是否不在StoreFile中,如果不在,读操作即刻终止。
      在这里插入图片描述
    • 工作原理:
    1. 初始化:创建一个m位的位数组(bit array),初始时将所有位都设为0
    2. 添加元素:当一个元素(如URL1、URL2、URL3)被加入集合时,通过k个哈希函数生成k个位置索引,并将这些位设置为1。
    3. 查询元素:要检查一个元素是否存在于集合中,再次通过相同的k个哈希函数生成k个位置索引。
      如果所有这些位置的位都是1,那么该元素可能在集合中(存在误判可能)。如果任何一个位置的位时0,则该元素绝对不在集合中。
    • 为什么要使用多个哈希函数?
      • 降低误判率,避免哈希冲突。
  • Region和Table

    • 单个Table被分区成大小大致相同的Region
    • 一个Region只能分配给一个RegionServer
      在这里插入图片描述
  1. HBase逻辑架构

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

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

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

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

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

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

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

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

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值