HBASE 认识

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1. HBASE 定义

HBASE 是一种分布式、可拓展、支持海量数据存储的 NoSQL 数据库

什么时候可以用 HBase

  • 单表数据量超千万且并发还挺高
  • 数据分析需求较弱或不需要那么灵活或者实时

以下情况之一建议不要使用 HBase

  • 主要需求为数据分析如做报表
  • 单表数据量不超过千万

HBase 与 Hive 对比

  • HBase主要解决实时数据查询问题HBase 是基于 Hadoop 的数据库适用于海量明细数据十亿、百亿的随机实时查询如日志明细、交易清单、轨迹行为等偏向于实时查询
  • Hive主要解决数据处理和计算问题HiveHadoop 数据仓库严格来说不算是数据库主要用于开发人员能够通过 SQL 来计算处理 HDFS 上的结构化数据适用于离线的批量数据计算偏向于离线计算

2. HBase 逻辑结构

HBase 底层物理结构是一个 k/v 结构存储形式类似于关系型数据库不过 HBase 是列式存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m8j3AZfp-1673957162822)(http://vdposter.bdstatic.com/eba01e9456981373d1ad3cbf5856d810.jpeg)]

HBase 物理存储结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQpT3MPj-1673957162823)(https://graph.baidu.com/thumb/v4/4192437538,675179936.jpg)]

3. HBase 数据模型

HBase 中的几个常用概念

  • Name Space命名空间类似于 数据库的概念每个命名空间下有多个表自带两个命名空间分别为hbase、default其中 hbase 存放的是 HBase 内置表default 表时用户默认使用的命名空间
  • Region类似于 数据表不同的是 HBase 在定义表时只需声明列族即可列名可 动态、按需指定与关系型数据库相比更为灵活
  • Row行每行数据由一个 rowkey 和多个 column 组成数据安装 rowkey 的字典顺序存储查询时只能根据 rowkey 检索
  • Column列列由 Column Family 列族Column Qualifier 列限定符 进行限定如info:name其中 info 是列族name 即为列限定符在创建表时可以不指定列限定符
  • TimeStamp数据版本用于标识数据的不同版本每条数据写入时若不指定时间戳系统自动添加该字段为写入 HBase 的时间
  • Cell单元格里面存储的是实际的数据HBase 存储的数据是没有类型的全部是字节码形式存储rowkey、cf、cn、timestamp 可以唯一确定一个 cell

4. HBase 基本架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKJF1ujP-1673957163483)(null)]

架构角色

  • Regio ServerRegion 的管理者其实现类为 HRgionServer作用
    • 对数据操作get、put、delete
    • Region 操作splitRegion、compactRegion
  • Master是所有 Region Server 的管理者其实现类为 HMaster作用
    • 对于表的操作create、delete、alter
    • 对于 RegionServer 操作分配 region 对每个 RegionServer监控每个 RegionServer 状态负载均衡和故障转移
  • ZookeeperHBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作
  • HDFSHBase 提供最终的底层数据存储服务同时提供高可用支持

4.1 部署架构

HBase 有两种服务器

  • Master 服务器一个负责维护表结构信息
  • RegionServer 服务器多个存储实际数据RegionServer 保存的表数据直接存储在 HadoopHDFS

RegionServer 依赖 zookeeper它类似于一个管家管理所有 RegionServer 的信息包括具体的数据段放在哪个 RegionServer 上客户端每次与 HBase 连接其实都是先与 ZooKeeper 通信查询出哪
RegionServer 需要连接然后再连接 RegionServer。

注意客户端获取数据由客户端直连 RegionServer即使 Master 挂掉依然可以查数据但是不能新建表

4.2 Region 是什么

Region 是一段数据的集合一张表中一般有一个或多个其特性如下

  • 不能跨服务器一个 RegionServer 上有一个或多个 Region
  • 数据量小时一个 Region 足以存储所有数据当量比较大的时候HBase 则会拆分 Region
  • HBase 进行负载均衡时也有可能会从一台 RegionServer 上把 Region 移动到另一台 RegionServer
  • Region 基于 hdfs所有数据存取操作都是调用 hdfs 的客户端接口来实现的

4.3 RegionServer 是什么

RegionServer 是存放 Region 的容器也可以说是一个服务一般来说一个节点会有一个 RegionServer 服务也可以开启多个。

当客户端从 Zookeeper 获取 RegionServer 地址后它会直接从 RegionServer 获取数据。

4.4 Master 是什么

结论Master 的工作是 “打杂”负责协调集群对 Master 依赖小不容易引起单点故障

Master 只负责协调工作如建表、删表、移动 Region、合并等这些操作的共性是需要跨 RegionServer。这种结果的好处是降低了集群对 Master 的依赖而 Master 节点一般只有一两个即使宕机也不会发生单点故障依然可以存储和删除数据。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6