Hbase 简介
1、Hbase 简介
1.1、Hbase 定义
hbase 是一种基于 HDFS 存储的 分布式、可扩展、支持海量数据存储的NoSQL数据库。可以实现,对海量数据的增删改查、 NoSQL = Not Only SQL,Hbase 源于 谷歌的 Bigtable 的开源,依赖于 Hadoop 的 hdfs 来存储海量数据,并依赖于zookeeper 做协调服务。
1.2、Hbase 数据模型
逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像是一个多维度map(multi-dimensional map)
1.2.1、Hbase 逻辑结构![]()
![]()
rowkey 系统自带,按 字典顺序排序,用于区分不同的行;多个列 组成一个列族; 多个行组成 Region ,分文件存储;
1.2.2、HBase物理存储结构
对于 HBASE 时间戳 用于标记 数据有效,默认情况下,每次查询数据只返回最新的时间戳标记的数据;
1.2.3、HBase数据类型
- NameSpace命名空间,类似于关系型数据库的DatabBase概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。
- Region 类似于关系型数据库的表概念。不同的是,HBase定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。
- Row HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。
- Column HBase中的每个列都由ColumnFamily(列族)和ColumnQualifier(列限定符)进行限定,例如info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
- TimeStamp 用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入HBase的时间。
- Cell 由{rowkey, columnFamily:columnQualifier, timeStamp} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存储。
1.3、Hbase 基本架构
架构角色:
- RegionServer 是 Region的管理者,其实现类为HRegionServer,主要作用如下:对于数据的操作:get, put, delete;对于Region的操作:splitRegion、compactRegion。
- Master 是所有RegionServer的管理者,其实现类为HMaster,主要作用如下:对于表的操作:create, delete, alter对于RegionServer的操作:分配regions到每个RegionServer,监控每个RegionServer的状态,负载均衡和故障转移。
- Zookeeper HBase通过Zookeeper来做Master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。
- HDFS HBase提供最终的底层数据存储服务,同时为HBase提供高可用的支持。
1.4、Hbase 中表特点
- 大:一个表可以有几十亿行记录,有上百万列数据,这在DBMS里是很难实现的;
- 面向列:面向列(族)的存储和权限控制,列(族)独立检索;
- 稀疏:对于空的列,并不占用hdfs存储空间,因此,表可以设计的稀疏些也无妨;
- 无模式:每一行数据都有一行可排序的主键和任意多列,列可以根据需要动态增加,同一张表可以有不同的列;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下