HBASE 认识
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1. HBASE 定义
HBASE
是一种分布式、可拓展、支持海量数据存储的 NoSQL
数据库
什么时候可以用 HBase
- 单表数据量超千万且并发还挺高
- 数据分析需求较弱或不需要那么灵活或者实时
以下情况之一建议不要使用 HBase
- 主要需求为数据分析如做报表
- 单表数据量不超过千万
HBase 与 Hive 对比
HBase
主要解决实时数据查询问题HBase
是基于Hadoop
的数据库适用于海量明细数据十亿、百亿的随机实时查询如日志明细、交易清单、轨迹行为等偏向于实时查询。Hive
主要解决数据处理和计算问题Hive
是Hadoop
数据仓库严格来说不算是数据库主要用于开发人员能够通过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 Server
Region
的管理者其实现类为HRgionServer
作用- 对数据操作
get、put、delete
- 对
Region
操作splitRegion、compactRegion
- 对数据操作
Master
是所有Region Server
的管理者其实现类为HMaster
作用- 对于表的操作
create、delete、alter
- 对于
RegionServer
操作分配region
对每个RegionServer
监控每个RegionServer
状态负载均衡和故障转移
- 对于表的操作
Zookeeper
HBase
通过Zookeeper
来做Master
的高可用、RegionServer
的监控、元数据的入口以及集群配置的维护等工作HDFS
为HBase
提供最终的底层数据存储服务同时提供高可用支持
4.1 部署架构
HBase
有两种服务器
Master
服务器一个负责维护表结构信息RegionServer
服务器多个存储实际数据RegionServer
保存的表数据直接存储在Hadoop
的HDFS
上
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
节点一般只有一两个即使宕机也不会发生单点故障依然可以存储和删除数据。