1. HBase 基本介绍
1.1简介:
*hbase 是 bigtable 的开源java版本(GFS ,MapRuduce ,Bigtable 这是谷歌的三篇论文,奠定了目前大数据的基础).是建立在hdfs(Hadoop分布式文件系统)之上的,提供高可靠性,高性能,列存储(列式存储比较适合大数据量(压缩比高)、分析型操作(针对少数几列);不适合频率较高的删除(全列检索)、更新(重新压缩)操作),可伸缩,实时读写 nosql(Not Only SQL泛指非关系型的数据库)数据库系统.
*主要用来存储结构化和半结构化的松散数据.
*Hbase 查询数据库功能简单,不支持 join(即不支持左连接,右连接,内连接) 等复杂操作,不支持复杂的事务(只支持行级别的事务,比如说转账操作的,A减后B立马加的操作,这种双行复杂操作就不能执行).
*Hbase 支持的数据类型是 : byte[ ]
与Hadoop 一样,Hbase 目标主要依靠 横向扩展,通过不断增加廉价的商用服务器来增加计算和存储能力.
Hbase 中的表一般有以下几点:
a. 大: 一个可以有上十亿行.上百万列.
b. 面向列 : 面向列(族)的存储和权限控制,列(族)独立检索.
c. 稀疏 : 对于为空 (null) 的列,并不占用存储空间,因此,表可以设计的非常的稀疏
1.2 HBase 的发展历程:
HBase 的原型是谷歌的 BigTable 论文,受到了该论文思想的启发,目前作为Hadoop 的子项目来开发维护,用于支持结构化的数据存储.
* 2006年Google发表BigTable白皮书
* 2006年开始开发HBase
* 2008 HBase成为了 Hadoop的子项目
* 2010年HBase成为Apache顶级项目
2. HBase 与 Hadoop 的关系
2.1 HDFS
*为分布式存储提供文件系统
*针对存储大尺寸的文件进行优化,不需要对 HDFS 上的文件进行随机 读写.
*直接使用文件
*数据模型不灵活
*使用文件系统和处理框架
*优化一次写入,多次读写的方式
2.2 HBase
*提供表装状的面向列的数据存储
*针对表状数据的随机读写进行优化
*使用 key - value 操作数据
*提供灵活的数据模型
*使用表状存储,支持 MapReduce (分布式计算) ,依赖 HDFS (hadoop 分布式文件系统)
*优化了多次读,以及多次写
3. RDBMS 与 HBase 的对比
RDBMS即关系数据库管理系统(Relational Database Management System),是将数据组织为相关的行和列的系统,而管理关系数据库的计算机软件就是关系数据库管理系统,常用的数据库软件有Oracle、SQL Server等。
3.1 关系型数据库
结构
*数据库以表的形式存在
*支持 FAT ,NTFS, EXT ,文件系统
*使用 Commit(保证) log 存储日志
*参考系统是坐标系统
*使用主键: (PK)
*支持分区
*使用行,列,单元格
功能
*支持向上扩展
*支持 SQL 查询
*面向行, 即每一行都是一个连续单元
*数据总量依赖于服务器配置
*具有 ACID事务的 支持(
Atomic(原子性)
Consistency(一致性)
Isolation(隔离性)
Durability(持久性)
)
* 适合结构化数据
*传统关系型数据库一般都是中心化的
*支持事务
*支持 Join (左连接,右连接,内连接)
3.2 HBase
结构:
*数据库以 region 的形式存在
* 支持 hdfs (hadoop 分布式文件系统)
*使用 WAL(Write-Ahead Logs/提前写入式日志) 存储日志
*参考系统是 Zookeeper
*使用行 键 (row key)
*支持分片
*使用行,列,列族和单元格
功能:
*支持向外扩展
*使用API 和 MapReduce(分布式计算)来访问 HBse 表数据
*面向列,即每一列都是一个连续的单元
*数据总量不依赖具体某一台机器,而是取决于机器的数量
*HBase 不支持 ADID事务(Atomicity、Consistency、Isolation、Durability)
*适合结构化数据和飞数据化数据
*一般都是分布式的
*HBase 不支持复杂事务,支持的是单行数据的事务操作(比如转账操作就不能执行)
*不支持 Join (就是左连接,右连接,内连接)
4. HBase 特征简要
海量存储
Hbase 适合存储 PB 级别的海量数据,在 PB 级别的数据以及采用廉价 PC 存储的情况下,能在即使到百毫秒内返回数据,这与 HBase 的极易扩展性息息相关,正因为 HBase 良好的扩展性,才为海量数据的存储提供了便利.
列式存储
这里的列式存储其实说的是列族存储(因为列可以有上百万列,所以把多个列组合成族,这样就可以通过对应的族管理列了),Hbase 是根据列族来存储数据的,列族下面可以有非常多得列,列族在创建表的时候就必须指定.
极易扩展
HBase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer) 的扩展,一个是基于存储的扩展(HDFS)通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
高并发
由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
稀疏
稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
5. HBase 的基础架构
HBase 的基础架构未完待续...
网友评论