如今数据的产生速度比几年以前已经有了迅猛的增长,随着全球化步伐加快,这个增长速度只会越来越迅猛,由此所产生的数据处理问题也会越来越严峻。像Google、Amazon、eBay和Facebook这样网站的用户已经覆盖到了地球上的绝大多数人。全球化网络应用 (planet-size web application)的概念已经形成,在这种背景下,企业使用HBase更合适。
举例来说,Facebook每天增量存储到它们Hadoop集群的数据量超过15 TB ④ ,并且随后会对所有这些数据进行处理。这些数据一部分是点击流日志,用户点击了它们的网站或点击了使用Facebook提供的社交插件的网站,每一步点击操作都会被记录并保存,这非常适合以批处理的模式,为预测和推荐系统构建机器学习模型。
Facebook还有一个实时组件,就是它们的消息系统,其中包括聊天、涂鸦墙和电子邮件,每个月会产生超过1350亿条数据 ⑤ ,存储几个月之后便会产生一个量级庞大的尾部数据,并且这些尾部数据需要被有效地处理。尽管电子邮件中占用存储量较大的部分(如附件)通常存储在二级系统中 ⑥ ,但这些消息产生的数据量还是令人难以置信的。以Facebook的数据产生条目为基础,假如按Twitter中的每条数据占用140字节来计算,Facebook每个月将会产生超过17 TB的数据,在将这些数据导入到HBase之前,现存的系统每个月也要处理超过25 TB的数据。 ⑦
目前在少数的重点行业中,面向Web业务的公司收集的数据量也在不断增长。
金融
如股票涨跌产生的数据。
生物信息学
如全球生物多样性信息机构(Global Biodiversity Information Facility, http://www.gbif.org/ )。
智能电网
如OpenPDC( http://openpdc.codeplex.com/ )项目。
销售
如销售终端(POS机)产生的数据,或者是股票系统、库存系统。
基因组学
如Crossbow( http://bowtie-bio.sourceforge.net/crossbow/index.shtml )项目。
移动电话服务、军事、环境工程
也产生了海量的数据。
海量数据领域越来越被重视,且该领域涌现出了非常多的新技术。技术的发展和时间的沉淀使得HBase开始被大家广泛认可,成为海量数据在线存储领域的首选。
①相关信息可以在Hadoop的官方网站 http://hadoop.apache.org/ 中找到。也可以到Tom White编写的《Hadoop权威指南(第2版)》(原出版社为O’Reilly)一书中查阅你想了解的Hadoop知识。
②此处引用的是Kimball集团的Ralph Kimball博士的一篇题为“Rethinking EDW in the Era of Expansive Information Management”的演讲( http://www.informatica.com/campaigns/rethink_edw_kimball.pdf ),这个演讲讨论了一个不断发展的企业数据仓库市场的需求。
③Edgar F. Codd定义了13个规则(编号为0~12),这些规则促使数据库管理系统(Datebase Management System,DBMS)被考虑为RDBMS。HBase需要满足更多的通用规则,但也有一些规则没有满足,最重要的是规则5:全面的数据子语言规则,这个规则定义了至少需要支持一种关系型语言。详情见维基百科关于科德十二定律的链接 http://en.wikipedia.org/wiki/Codd's_12_rules 。
④见Facebook提供的信息 http://www.facebook.com/note.php?note_id=89508453919 。
⑤请看博文 http://www.facebook.com/note.php?note_id=454991608919 ,这篇博文来自Facebook的工程团队。150亿条墙消息和1200亿条聊天消息,共计1350亿条消息一个月。此外,Facebook还添加了SMS和其他一些应用,这些都会使数据量变得更为庞大。
⑥Facebook使用了Haystack,Haystack优化了二进制大对象的存储结构,提供了二进制小对象存储,例如图片。
⑦见 http://www.slideshare.net/brizzzdotcom/facebook-messages-hbase ,这是Facebook的员工Nicolas Spiegelberg写的,他也是HBase的committer。
本文节选自《HBase权威指南》
内容简介
本书探讨了如何通过使用与HBase高度集成的Hadoop将HBase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式、拷贝表、导入批量数据和删除节点等。