《HBase实战》一导读

  1. 云栖社区>
  2. 博客>
  3. 正文

《HBase实战》一导读

异步社区 2017-05-02 09:53:00 浏览2402
展开阅读全文


q3

前 言

HBase实战
2008年秋季我开始和HBase结缘,当时它还是一个新生项目,一年前刚刚发布。早期版本出来时,HBase表现很不错,但是也不是没有令人尴尬的缺陷。HBase项目当时有近10个软件Commiffer,作为一个Apache子项目还算不错。接下来是NoSQL宣传的高潮。当时专有名词NoSQL还没有出现,但是随后的一年这个术语变成了通俗用语。没有人能够说清楚为什么NoSQL重要,只知道它就是重要,反正数据领域开源社区的每个人都对这个概念很着迷。社区中有两种声音,有人批评关系型数据库,批评它愚不可及的严谨;有人嘲笑新技术,嘲笑它不够成熟。

大部分探索新技术的人来自于互联网公司,当时我就在一家致力于社交媒体内容分析的创业公司工作。那时候Facebook仍在强调隐私政策,而Twitter还不够大,其著名的报错页面“失败的鲸鱼”(Fail Whale)还没有问世。当时我们的兴趣点主要在博客上。在此前一家公司我花了3年好时光专注于层次型数据库引擎。我们广泛使用了Berkeley DB,所以我熟悉不使用SQL引擎的数据技术。在这家公司我加入了一个小团队,任务是构建一个新型数据管理平台。我们有一个MS SQL数据库,已经塞满了博客帖子和评论。当我们的日常分析作业耗时达到18小时时,我们都知道这个系统时日不多了。

在收集了基本需求后,我们着手寻找新型数据技术。我们的团队不大,一边维护现有系统,一边花了数月时间评估不同的选择。我们试验了不同的方法,并亲身感受了对数据手工分区的痛苦。我们研究了CAP定理和最终一致性,最后的结论是妥协。尽管HBase有缺点,我们还是决定选择它,我们认为开源技术的潜在好处超过了它的风险,并且说服了经理。

我在家里玩过Hadoop,但是从没有写过真正的MapReduce作业。我听说过HBase,但在这份新工作之前也没有特别关注过。随着时间推移,我们已经开始行动。我们申请了一些空闲机器和几个机架,然后就开工了。这家公司是.NET的地盘,我们得不到运维支持,所以我们学着使用bash和rsync,自己管理整个集群。

我加入了邮件列表和IRC频道,开始提问题。就在那个时候,我认识了Amandeep。他在忙于硕士论文,尝试把HBase运行到Hadoop以外的系统上。不久他完成学业,加入Amazon,搬到西雅图。在这个充满微软痕迹的城市中,我们两个是少有的HBase粉丝。随后两年很快过去了……

2010年秋季,第一次提出让我们写《HBase实战》。在我们看来,这很搞笑。为什么是我们这两个社区会员来写这本书?内部来看,这是一块难啃的骨头。《HBase权威指南》正在进展中,我们认识它的作者,我们深知在他面前的挑战。外部来看,我认为HBase只是一个“简单的键值数据库”。API只有5个基本概念,都不复杂。我们不想再写一本类似于《HBase权威指南》那样介绍内部机制的书,我也不相信应用开发人员从这类书中可以得到足够有价值的东西。

我们开始做头脑风暴,事情很快清楚了,我是错的。不仅可以找到足够的资料帮助用户,而且社区会员的角色使得我们成为写这本书的最佳人选。我们开始分门别类整理多年来我们使用这门技术累积下来的知识。这本书是我们8年来使用HBase实践经验的升华。它面向HBase的全新用户,可以指导大家跃过我们自己当年遇到过的障碍。我们尽可能多地收集和编篡了散布在社区里的内部知识。对于模糊的建议我们尽可能给出清晰的指导。我们希望你能发现这本书是一个完整的手册,可以帮助你顺利开始使用HBase,而不只是一个简单的问答列表。

HBase现在逐渐稳定了。我们开始时遇到过的大部分缺陷已经被解决、打上补丁、或者完全修改了架构。HBase正在接近1.0版本,在这个里程碑时刻我们很自豪自已是社区的一部分。我们很自豪把这份书稿提交给社区,希望它可以鼓舞和帮助下一代HBase用户。HBase最强大之处就是兴旺的社区,我们希望你加入到社区来,帮助社区在数据系统新时代继续创新。

Nick Dimiduk

当你看到这里的时候,你大概很想知道我是怎样进入HBase世界的。首先我要感谢你选择这本书来学习HBase,学习怎样使用HBase作为存储系统来搭建应用系统。希望你能找到有用的东西和实用技巧,以便更好地搭建应用系统,祝你成功。

我曾经在加州大学圣克鲁兹分校进行本科学习,当时我在思科公司找了一份兼职研究员的工作,专注于分布式系统。我所工作的团队当时在搭建一个数据集成框架,这个框架可以对数百种数据存储(包括但不限于大型关系型数据库管理系统)上的数据进行集成、索引和研究。我们开始寻找可以解决问题的系统和解决方案。我们评估了许多系统,从对象数据库到图形数据库,最后我们考虑基于Berkeley DB构建一个定制的分布式数据存储。显而易见的一个关键需求是可扩展性,但是我们并不想从头开始构建一个分布式系统。想想看,如果你为某个机构工作,打算构建一个定制的分布式数据库或者文件系统,最好先看看有没有现成的解决方案可以解决你的一部分问题。

基于这个原则,我们认为从头开始搭建新系统是不明智的,我们希望使用已有的技术。随后我们开始使用Hadoop系列产品,尝试了很多组件,在HBase上为数据集成系统搭建了概念验证原型系统。系统工作良好,扩展性也不错。HBase很适合解决这类问题,但是当时它们都是新生项目,能够保证我们成功的一个重要因素是它们的社区。HBase有着一个最热情的、最有活力的开源社区;当时社区规模要小得多,但是迄今为止其核心理念一直没有变化。

后来数据集成项目成了我的研究生论文。这个项目用HBase作为核心,因此我也越来越深入地参与到社区中。在邮件列表里和IRC频道里,开始我是问别人问题,后来我也回答别人的问题。在这段时间里我认识了Nick并了解了他在做什么。在为这个项目工作的过程中,我对这个技术和开源社区的兴趣和热爱与日俱增,我希望一直参与下去。

完成研究生学习后,我加入了位于西雅图的Amazon,开始做后端分布式系统项目的工作。我的大部分时间花在Elastic MapReduce团队那里,我们搭建了HBase托管服务的第一个版本。Nick也生活在西雅图,我们经常见面,讨论工作中的项目情况。2010年底,Manning出版社提出写《HBase实战》这本书。开始的时候我们觉得这个想法很搞笑,我记得对Nick说过:“不就是上传、下载和扫描吗?HBase的客户端只做这几件事情。你想写一本介绍3个API 调用的书吗?”

但是深入思考之后,我们意识到构建HBase应用系统很有挑战,而市面上缺乏足够的资料可供启蒙。这种情况限制了HBase的发展。我们决定收集更多如何有效使用HBase的资料,来帮助大家构建满足需要的系统。我们花了一些时间整理资料,2011年秋季,我们开始了这本书的写作。

那段时间,我搬家到了旧金山,加入了Cloudera公司,接触到很多搭建在Hadoop和HBase上的应用系统。我尽力结合我所知道的以及过去多年在HBase相关工作中和研究生学习中得到的,提取精华写到你现在读的这本书中。多年来HBase走了很长的路,许多大公司使用它作为核心系统。它比以往更加稳定、快速和易于维护,1.0版本也接近发布了。

我们写这本书的目的就是希望学习HBase可以更加有章可循,更加容易,更加有趣。等你进一步了解HBase以后,我们鼓励你参与到社区中来,你可以学到更多在这本书中没有讲到的。你可以发表博客,贡献代码,分享经验,让我们一起推动这个伟大的项目向各种可能的方向走得更远。打开书,开始阅读,欢迎来到HBase世界!

目 录

第一部分 HBase基础
第1章 HBase介绍
1.1  数据管理系统:速成
1.2  HBase使用场景和成功案例
1.3  你好HBase
1.4  小结
第2章 入门
2.1  从头开始
2.2  数据操作
2.3  数据坐标
2.4  小结
2.5  数据模型
2.6  表扫描
2.7  原子操作
2.8  ACID语义
2.9  小结
第3章 分布式的HBase、HDFS和MapReduce
第二部分 高级概念
第4章 HBase表设计
第5章 使用协处理器扩展HBase
第6章 其他的HBase客户端选择
第三部分 应用系统实例
第7章 通过实例学习HBase:OpenTSDB
第8章 在HBase上查询地理信息系统
第四部分 让HBase运转起来
第9章 部署HBase
第10章 运维

网友评论

登录后评论
0/500
评论
异步社区
+ 关注