当前位置: 首页 > news >正文

大数据学习(105)-Hbase

🍋🍋大数据学习🍋🍋

🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


HBase简介

HBase是一个基于Hadoop的分布式、可扩展、支持大数据存储的数据库。

使用场景:需要随机或实时读写大数据的场景

目标:支持数十亿行和数百万列的大表

底层技术对应关系:

分布式列存储BigTableHBase(基于Hadoop)BigTable是Google的分布式列存储系统,HBase是其开源实现,提供稀疏多维映射表。
分布式文件系统GFS(Google File System)HDFS(Hadoop Distributed File System)GFS是Google的早期分布式文件系统,HDFS是其开源版本,支持大规模数据存储。
海量数据处理框架MapReduceHadoop MapReduceMapReduce是Google提出的分布式计算模型,Hadoop MapReduce是其开源实现。
分布式协同服务管理ChubbyZookeeperChubby是Google的分布式锁服务,Zookeeper是其开源实现,用于协调分布式系统。

数据模型

HBase采用表来组织数据,采用命名空间(NameSpace)对表进行逻辑分组。

NameSpace: 命名空间,类似于mysql中的database,默认有default和hbase,用户表默认在default中

表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族。

行:每个HBase表都由若干行组成,每个行由可排序的**行键(row key)**来标识。

列:采用列族:列限定符的形式确定具体的一列。

列族:一个HBase表被分组成许多“**列族”(Column Family)**的集合,它是基本的访问控制单元。列族可以动态添加,但在定义表时需要指定至少一个列族,在使用某个列族时要事先定义。
列限定符:表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一个列族里面的数据存储在一起。列族里的数据通过**“列限定符”(Column qualifier)**来定位。
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[],所以在定义表时无需定义数据的类型,使用时用户需要自行进行数据类型转换。

时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引, HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)

HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳,在进行数据存储的时,其采用key-value形式:Table + RowKey(升序) + ColumnFamily + Column + Timestamp --> Value

系统架构

HBase采用主从结构设计,基础存储依赖于HDFS,协调服务依赖于Zookeeper集群,HMaster负责HBase的管理操作,HRegionServer负责数据的相关操作。

客户端(Client)

客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程。

对于管理类操作,Client与HMaster进行RPC

对于数据读写操作,Client与HRegion Server进行RPC

Zookeeper服务器

Zookeeper是Chubby算法的一种开源实现

  1. 保证任何时候,集群中只有一个活跃的master,因为为了保证安全性会启动多个Master
  2. 存储所有Region的寻址入口
  3. 实时监控Region Server的状态,将Region Server的上下线的信息汇报给HMaster。
  4. 存储Hbase的元数据(Schema)包括,知道整个Hbase集群中有哪些Table,每个 Table 有哪些column family(列族)

Master服务器

主服务器主要负责表和Region的管理工作, 其实现类为 HMaste :

  • 对于表的操作:create, delete, alter
  • 对于 RegionServer 的操作:
  1. 实现不同Region服务器之间的负载均衡
  2. 在Region分裂或合并后,负责重新调整Region的分布
  3. 对发生故障失效的Region服务器上的Region进行迁移

Region服务器

Region服务器是HBase中最核心的模块,维护Master分配给他的 Region ,其实现类为 HRegionServer ,主要组成如下:

  • 一个Region服务器包含多个Region,这些Region共用一个HLog文件
  • Region由一个或者多个Store组成,每个Store保存一个 Columns Family。
  • 每个Strore又由一个MemStore和0至多个StoreFile组成。
  • MemStore存储在内存中,StoreFile存储在HDFS
  • StoreFile的底层实现是HFile

主要作用如下:

  1. 对于数据的操作:get, put, delete
  2. 对于 Region 的操作:splitRegion、compactRegion

相关文章:

  • 传统项目纯前端实现导出excel之xlsx.bundle.js
  • 无人机视觉定位,常用相机,及相机提供的数据信息
  • 系统架构设计师之系统设计模块笔记
  • Redis进阶--哨兵
  • 【Git】--- 多人协作实战场景
  • BFG Repo-Cleaner 教程:快速清理 Git 仓库中的敏感数据和大文件
  • Android InstalldNativeService::getAppSize源码分析
  • Ubuntu系统下的包管理器APT
  • Fay 数字人部署环境需求
  • Ubuntu下载火狐浏览器
  • Python学习笔记(9)关于元组
  • P1049 装箱问题
  • PPT处理控件Aspose.Slides教程:使用 Java 编程创建动画幻灯片
  • 解析Java包核心知识
  • 单链表——C语言实现
  • c++进阶--智能指针
  • 第十三天 - Ansible基础架构 - YAML语法与Playbook - 练习:批量配置部署
  • Kaggle-Digit Recognizer-(多分类+卷积神经网络CNN)
  • 集成学习+泰坦尼克号案例+红酒品质预测
  • pipe匿名管道实操(Linux)