HBase不睡觉书 - (EPUB全文下载)

文件大小:0.42 mb。
文件格式:epub 格式。
书籍内容:

HBase不睡觉书
第1章 ◄ 初识HBase ►
第2章 ◄ 让HBase跑起来 ►
第3章 ◄ HBase基本操作 ►
第4章 ◄ 客户端API入门 ►
第5章 ◄ HBase内部探险 ►
第6章 ◄ 客户端API的高阶用法 ►
第7章 ◄ 客户端API的管理功能 ►
第8章 ◄ 再快一点 ►
第9章 ◄ 当HBase遇上MapReduce ►
第1章◄ 初识HBase ►
1.1 海量数据与NoSQL
1.1.1 关系型数据库的极限
想必大家都用过类似MySQL或者Oracle这样的关系型数据库。一个网站或者系统最核心的表就是用户表,而当用户表的数据达到几千万甚至几亿级别的时候,对单条数据的检索将花费数秒甚至达到分钟级别。实际情况更复杂,查询的操作速度将会受到以下两个因素的影响:
表会被并发地进行插入、编辑以及删除操作。一个大中型网站的并发操作一般能达到几十乃至几百并发,此时单条数据查询的延时将轻而易举地达到分钟级别。
查询语句通常都不是简单地对一个表的查询,而有可能是多个表关联后的复杂查询,甚至有可能有group by或者order by操作,此时,性能下降随之而来。
因此,当关系型数据库的表数据达到一定量级的时候,查询的操作就会慢得无法忍受。姑且不论聘请经验丰富的DBA进行深度优化的成本多少,实际情况是,哪怕是进行了深度的优化,情况仍然不容乐观。原本这种情况只发生在某些垄断行业中,但是现在随着越来越多的“独角兽公司”(估值达到10亿美元以上的公司)的出现,在海量数据下进行快速开发,并进行高效运行的需求越来越多。这可难倒了全世界的关系型数据库专家,世界的数据库技术似乎达到了瓶颈。怎么办呢?
1.1.2 CAP理论
有的专家尝试将关系型数据库做成分布式数据库,把压力分摊到了多个服务器上,但是,随之而来的问题则是很难保证原子性。原子性可是数据库最根本的ACID中的元素啊!如果没有了原子性,数据库就不可靠了,这样的数据库还能用吗?如果增加一些必要的操作,那么原子性是保证了,但是性能却大幅下降了。专家们始终没有办法构建出一个既有完美原子性又兼具高性能的分布式数据库。
就在一筹莫展的时候,有人突然想起,20世纪90年代初期Berkerly大学有位Eric Brewer教授提出了一个CAP理论,如图1-1所示。
图1-1
全称是Consistency Availability and Partition tolerance:
Consistency(一致性):数据一致更新,所有数据变动都是同步的。
Availability(可用性):良好的响应性能。
Partition tolerance(分区容错性):可靠性。
Brewer教授给出的定理是:
任何分布式系统只可同时满足二点,没法三者兼顾。
Brewer教授给出的忠告是:
架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
这回人们可以不用纠结于如何设计一个拥有完美原子性的高性能分布式数据库了。现在的问题是,我们究竟要舍弃哪一个特性?
1.1.3 NoSQL
对CAP特性的放弃带来了一种全新类型的数据库——非关系型数据库。和关系型数据库正好相反,非关系型数据库NoSQL对事务性的要求并不严格,甚至可以说是相当马虎。
有些数据库是保证最终一致性,信息不会立即同步,而是经过了一段时间才达到一致性。比如你发了一篇文章,你的一部分朋友立马看到了这篇文章,另一部分朋友却要等到5分钟之后才能刷出这篇文章。虽然有延时,但是对于一个娱乐性质的Web 2.0网站又有谁会在乎这几分钟的延时呢?如果你用传统关系型数据库,网站可能早就宕掉了。
有些数据库可以在部分机器宕机的情况下依然可以正常运行,其实原理就是把同一份数据复制成了好几份放到了好几个地方,正应了那句老话:
不要把鸡蛋同时放在一个篮子里。
读者在之后的篇章中可以看到,HBase正是这种类型的NoSQL数据库。
总之,数据库的世界从此开始百花齐放起来了,如图1-2所示。
图1-2
很多人以为NoSQL是非SQL的意思,其实它是Not Only SQL的缩写,意思是不只是SQL。
1.2 HBase是怎么来的
2006年Google技术人员Fay Chang发布了一篇文章Bigtable: A Distributed 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。
HBase Logo的演化过程如图1-3所示。
图1-3
看来我不是唯一一个觉得以前的Logo很丑的人。
1.3 为什么要用HBase
HBase的存储是基于Hadoop的。Hadoop是这些年崛起的拥有着高性能,高稳定,可管理的大数据应用平台。Hadoop已经快要变为大数据的代名词了,基于Hadoop衍生出了大量优秀的开源项目。
Hadoop实现了一个分布式文件系统(HDFS)。HDFS有高容错性的特点,被设计用来部署在低廉的硬件上,而且它提供高吞吐量以访问应用程序的数据,适合那些有着超大数据集的应用程序。基于Hadoop意味着HBase与生俱来的超强的扩展性和吞吐量。
HBase采用的是Key/Value的存储方式,这意味着,即使随着数据量增大,也几乎不会导致查询的性能下降。HBase又是一个列式数据库(对比于传统的行式数据库而言),当你的表字段很多的时候,你甚至 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家
书云 Open E-Library » HBase不睡觉书 - (EPUB全文下载)