HBASE 认识

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 的监控、元数据的入口以及集群配置的维护等工作
  • HDFS:为 HBase 提供最终的底层数据存储服务,同时提供高可用支持

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 节点一般只有一两个,即使宕机也不会发生单点故障,依然可以存储和删除数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风老魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值