《HBase实战》一导读

    xiaoxiao2024-05-21  106

    前 言

    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  你好HBase1.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章 运维

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)