没有合适的资源?快使用搜索试试~ 我知道了~
大数据技术之HBase
资源详情
资源评论
资源推荐
HBASE
第 1 章 NoSQL 简介
1.1 关系型数据库的查询瓶颈
当用户表的数据达到几千万甚至几亿级别的时候,对单条数据的检索将花费数秒甚至达到分钟级别。实际情况
更复杂,查询的操作速度将会受到以下两个因素的影响:
①高并发的更新(插入、修改、删除)操作。大中型网站的并发操作一般能达到几十乃至几百并发,此时单条数
据查询的延时将轻而易举地达到分钟级别。
②多表关联后的复杂查询,以及频繁的 group by 或者 order by 操作,此时,性能下降较为明显。
1.2 CAP 定理
分摊读写压力的有效方式是将单个关系型数据库扩展为分布式数据库。但是,随之而来的问题则是很难保证原
子性。没有了原子性,事务也无从谈起,关系型数据库也就没有了存在的意义。
为了保证原子性,则需要增加很多额外的必要操作,此时一次写操作的性能却面临大幅下降了。
20
世 纪
90
年 代 初 期
Berkerly
大 学 有 位
Eric Brewer
教 授 提 出 了 一 个
CAP
理 论 。 全 称 是
Consistency
Availability and Partition tolerance
。
Consistency
(强一致性):数据更新操作的一致性,所有数据变动都是同步的。
Availability
(高可用性):良好的响应性能。
Partition tolerance
(高分区容错性):可靠性。
Brewer
教授给出的定理是:任何分布式系统只可同时满足二点,没法三者兼顾。
Brewer
教授给出的忠告是:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取
舍。所以专家们始终没有办法构建出一个既有完美原子性又兼具高性能的分布式数据库。
1.3. NoSQL
有些数据库在实现性能的同时会牺牲一部分一致性,即数据在更新时,不会立刻同步,而是经过了一段时间才
达到一致性。这个特性也称之为最终一致性!例如你发了一条朋友圈,你的一部分朋友立马看到了这条信息,而另
一部分朋友可能要等到 1 分钟之后才能刷出这条消息。虽然有延时,但是对于这样一个社交的场景,这个延时是可
以容忍的。而如果使用传统关系型数据库,可能这些即时通信软件就早已崩溃!
NoSQL 数据库最初指不使用 SQL 标准的数据库,现在泛指非关系型数据库。NoSQL 一词最早出现于 1998 年,
是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的数据库。
现在 NoSQL 被普遍理解理解为“Not Only SQL”,意为不仅仅是 SQL。NoSQL 和传统的关系型数据库在很多场景下是
相辅相成的,谁也不能完全替代谁。
第 2 章 HBase 简介
2.1 HBase 的来源
2006 年 Google 技术人员 Fay Chang 发布了一篇文章 Bigtable: ADistributed Storage System for Structured Data。
该文章向世人介绍了一种分布式的数据库,这种数据库可以在局部几台服务器崩溃的情况下继续提供高性能的服务。
2007 年 Powerset 公司的工作人员基于此文研发了 BigTable 的 Java 开源版本,即 HBase。刚开始它只是 Hadoop
的一部分。
2008 年 HBase 成为了 Apache 的顶级项目。HBase 几乎实现了 BigTable 的所有特性。它被称为一个开源的非
关系型分布式数据库。
2010 年 HBase 的开发速度打破了一直以来跟 Hadoop 版本一致的惯例,因为 HBase 的版本发布速度已经超越
了 Hadoop。它的版本号一下从 0.20.x 跳跃到了 0.89.x。其 Logo 也进行了更换!
2.2 HBase 定义
HBase
是一种分布式、可扩展、支持海量数据存储的
NoSQL
数据库。
Hbase
面向列存储,构建于
Hadoop
之上,类似于
Google
的
BigTable
,提供对
10
亿级别表数据的快速随机实
时读写!
2.3 Hbase 的特点
2.3.1 HBase 的特点
1)海量存储
HBase 适合存储 PB 级别的海量数据,在 PB 级别的数据以及采用廉价 PC 存储的情况下,能在几十到百毫秒内
返回数据。这与 HBase 的极易扩展性息息相关。正式因为 HBase 良好的扩展性,才为海量数据的存储提供了便利。
2)列式存储
这里的列式存储其实说的是列族存储,HBase 是根据列族来存储数据的。列族下面可以有非常多的列,列族在
创建表的时候就必须指定。
3)极易扩展
HBase 的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的
扩展(HDFS)。
通过横向添加 RegionSever 的机器,进行水平扩展,提升 HBase 上层的处理能力,提升 Hbase 服务更多 Region
的能力。
4)高并发
由于目前大部分使用 HBase 的架构,都是采用的廉价 PC,因此单个 IO 的延迟其实并不小,一般在几十到上百
ms 之间。这里说的高并发,主要是在并发的情况下,HBase 的单个 IO 延迟下降并不多。能获得高并发、低延迟的
服务。
5)稀疏
稀疏主要是针对 HBase 列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用
存储空间的。
2.3.2 Hbase 的优点
①HDFS 有高容错,高扩展的特点,而 Hbase 基于 HDFS 实现数据的存储,因此 Hbase 拥有与生俱来的超强的扩展性
和吞吐量。
②HBase 采用的是 Key/Value 的存储方式,这意味着,即便面临海量数据的增长,也几乎不会导致查询性能下降。
③HBase 是一个列式数据库,相对于于传统的行式数据库而言。当你的单张表字段很多的时候,可以将相同的列(以
regin 为单位)存在到不同的服务实例上,分散负载压力。
2.3.3 Hbase 的缺点
①
架构设计复杂,且使用
HDFS
作为分布式存储,因此只是存储少量数据,它也不会很快。在大数据量时,它慢的
不会很明显!
②Hbase
不支持表的关联操作,因此数据分析是
HBase
的弱项。常见的
group by
或
order by
只能通过编写
MapReduce
来实现!
③
Hbase
部分支持了
ACID
2.3.4 Hbase 的总结
适合场景:单表超千万,上亿,且高并发!
不适合场景:主要需求是数据分析,比如做报表。数据量规模不大,对实时性要求高!
2.4 HBase 数据模型
逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理
存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。
2.4.1 HBase
逻辑结构
2.4.2 HBase
物理存储结构
2.4.3 数据模型
1
)
Name Space
命名空间,类似于关系型数据库的
database
概念,每个命名空间下有多个表。
HBase
两个自带的命名空间,分
别是
hbase
和
default
,
hbase
中存放的是
HBase
内置的表,
default
表是用户默认使用的命名空间。
一 个 表 可 以 自 由 选 择 是 否 有 命 名 空 间 , 如 果 创 建 表 的 时 候 加 上 了 命 名 空 间 后 , 这 个 表 名 字 以
<Namespace>:<Table>
作为区分!
2
)
Table
剩余35页未读,继续阅读
浅酌丶流年
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0