玩转大数据

2019一篇文章了解HBase与集群的详细搭建

2019-07-26  本文已影响0人  c062197eecd2

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 的基础架构

未完待续...

上一篇下一篇

猜你喜欢

热点阅读