读书人

Big Data技术综上所述

发布时间: 2012-06-28 15:20:03 作者: rapoo

Big Data技术综述

Big Data是近来的一个技术热点,但从名字就能判断它并不是什么新词。毕竟,大是一个相对概念。历史上,数据库、数据仓库、数据集市等信息管理领域的技术,很大程度上也是为了解决大规模数据的问题。被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了。

然而,Big Data作为一个专有名词成为热点,主要应归功于近年来互联网、云计算、移动和物联网的迅猛发展。无所不在的移动设备、RFID、无线传感器每分每秒都在产生数据,数以亿计用户的互联网服务时时刻刻在产生巨量的交互……要处理的数据量实在是太大、增长太快了,而业务需求和竞争压力对数据处理的实时性、有效性又提出了更高要求,传统的常规技术手段根本无法应付。

在这种情况下,技术人员纷纷研发和采用了一批新技术,主要包括分布式缓存、基于MPP的分布式数据库、分布式文件系统、各种NoSQL分布式存储方案等。

10年前,Eric Brewer提出著名的CAP定理,指出:一个分布式系统不可能满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足两个。系统的关注点不同,采用的策略也不一样。只有真正理解了系统的需求,才有可能利用好CAP定理。

架构师一般有两个方向来利用CAP理论。

Key-Value存储,如Amazon Dynamo等,可以根据CAP理论灵活选择不同倾向的数据库产品。 领域模型+分布式缓存+存储,可根据CAP理论结合自己的项目定制灵活的分布式方案,但难度较高。

对大型网站,可用性与分区容忍性优先级要高于数据一致性,一般会尽量朝着A、P的方向设计,然后通过其他手段保证对于一致性的商务需求。架构设计师不要将精力浪费在如何设计能满足三者的完美分布式系统,而应该懂得取舍。

不同的数据对一致性的要求是不同的。SNS网站可以容忍相对较长时间的不一致,而不影响交易和用户体验;而像支付宝这样的交易和账务数据则是非常敏感的,通常不能容忍超过秒级的不一致。

图4 线上应用系统与数据平台的无缝融入

总结篇

近来NoSQL数据库的使用越来越普及,几乎所有的大型互联网公司都在这个领域进行着实践和探索。在享受了这类数据库与生俱来的扩展性、容错性、高读写吞吐外(尽管各主流NoSQL仍在不断完善中),越来越多的实际需求把人们带到了NoSQL并不擅长的其他领域,比如搜索、准实时统计分析、简单事务等。实践中一般会在NoSQL的外围组合一些其他技术形成一个整体解决方案。

准实时的统计分析

传输时统计分析,Stream Processing技术:FlumeBase、S4。

FlumeBase:可参考 http://flumebase.org/documentation/0.1.0/UserGuide.html中的quick start和architecture两部分。

S4:Yahoo!开源数据来流计算实时框架,可参考http://labs.yahoo.com/files/KDCloud%202010%20S4.pdf。

查询时统计分析,结果集较小时,可以直接在返回前做统计分析处理。

比如买家消费记录查询的HBase实现,Schema设计,rowkey=uid,column=搜索词和查询值,version=交易id。

搜索相关

充分利用NoSQL(比如HBase)内部数据的有序性、Row Key、Column Family、Version Timestamp。

我们用“HBase+二次索引”来实现实时营销的解决方案。也可以参考Facebook Message的解决方案:http://blog.bluedavy.com/?p=258。

构建一个外围系统完成索引建立。

Google MegaStore:原文链接为http://www.cidrdb.org/cidr2011/Papers/CIDR11_Paper32.pdf,中文译文链接为http://cloud.csdn.net/a/20110216/291968.html。

也有人开始尝试基于HBase的MegaStore实现,链接为https://github.com/drevell/megalon。

简单事务

事务处理服务 + NoSQL存储。 淘宝开发的千亿级海量数据库Oceanbase,通过update server角色执行将写操作限制在一台机器上,实现事务。参考链接为:http://www.nosqlnotes.net/archives/170。 Google MegaStore通过为用户提供机制,根据应用特点划分entity group,将事务涉及的数据分布到一台机器上,实现事务。

读书人网 >开源软件

热点推荐