1 “大数据”时代来临
“大数据”这个词这两年着实火了一把,在我看来都抢过“云计算”的风头了。为什么?因为对于不搞云计算的人,要真正理解云计算实在太难了,而对于搞云计算的人来说,也很难讲清楚什么是云计算,结果最后把大家搞晕了,“云计算”成了“晕计算”,而“大数据”却是我们能够深切体会得到的。那么如何利用好这些数据,从中挖掘潜在的价值,就是我们今天要谈的“大数据”时代的商机。各大IT厂商无一不看好这块蛋糕,纷纷加入“大数据”掘宝阵营。
1.1 背景
随着Web2.0的发展,尤其是社交网络、移动计算和传感器等新的渠道和技术不断涌现,数据量呈现出前所未有的爆炸式增长。分析调研机构IDC 2011年6月发布了数字宇宙研究报告(Digital Universe Study)——《从混沌中提取价值》(Extracting Value from Chaos)。报告显示,全球信息总量每过两年,就会增长一倍。2011年,全球被创建和被复制的数据总量为1.8ZB。相较去年同期,这一数据上涨了超过1ZB。而到下一个十年(2020年),全球所有IT部门拥有服务器的总量将会比现在多出十倍(包括虚拟机和物理机),所管理的数据将会比现在多出五十倍。
而从数据形态上来看,在被创建的信息数据总量中,有75%来自于个人,这包括文字、图片、视频和音乐。这些个人数据的蔓延增速要比数据的创建速度更加迅猛。也就是说相比结构化数据,半结构化或者非结构化数据如XML、邮件、博客、即时消息等将成为数据的主体。
1.2 大数据的定义
对于大数据的定义,Gartner和McKinsey提出4个V:
1) Volume(海量):这点不必多说,从上面介绍的数字就能体会到。
2) Velocity(快速):虽然数据量增多了,但是某些应用对于访问数据的速度仍然要求很高,例如社交网络数据,用户往往要求有较高的实时性,这对大数据处理的实时性有较大挑战。
3) Variety(多样性):传统交易数据都是关系型的结构化数据,而现在更多互联网多媒体应用的出现,使诸如图片、声音和视频等非结构化数据占到了很大比重。
4) Value(价值):大数据隐藏的价值是可观的,面临的挑战是如何从海量数据中辨别有价值的信息,然后进行转化和分析。
2 传统架构面临的挑战与机遇
数据的变革,引发了一起IT架构的变革,在大数据的环境下,传统IT面临着巨大的挑战,已经远远满足不了应用的需求,同时这也催生了一些新兴的技术的产生。在大数据时代,出现了前所未有的百家争鸣的盛况,表现为以下几点:
2.1 传统RDBMS“one size fit all”时代的终结
之前我们一提到数据库就是Oracle、DB2、SQL Server、MySQL等等这些传统的RDBMS,那个时代我们都是讨论这些那个数据库多么功能强大,似乎什么都能干。然而随着大数据的产生,我们越来越发现,这种“one size fit all”的思路是错误的,不同的应用场景应该选择不同的数据库才更合适,也就是“one size fit one”(见关系数据库大牛Michael Stonebaker的论文《”One Size Fits All”: An Idea Whose Time Has Come and Gone》)。这是因为现在这些RDBMS的架构是60/70年代的产物,当时的设计思想主要是解决OLTP,都是集中式设计,其中的一些技术比如索引、事务等等均是解决OLTP应用的。而目前随着数据量的增大,尤其是BI的兴起,催生了越来越多的OLAP应用,还有互联网的快速发展,海量存储、高并发、高扩展等要求越来越高。传统OLTP型RDBMS在应用于这些场景时表现出了很大的瓶颈,具体表现为:
- 容量:数据量越来越大,集中式数据库难以支撑海量数据。
- 扩展性:单机容量有限,那就进行分布式存储,也就是对数据库进行分库分表,然而RDBMS的关系模型很难做到扩展。
- 可用性:数据是宝贵的,且服务是在线的,必须保证数据库高可用性。
- 延时:数据量大了,但是应用对访问延时的要求没有降低反而越来越高。
2.2 数据仓库技术越来越吃香
大数据时代,如何利用好大数据并从中挖掘价值是最终目的。而数据仓库本身就是为了大数据分析而设计,因此在大数据时代越来越吃香。这些厂商包括Netezza、Greenplum、Sybase、AsterData、Teradata、Vertica。正是由于这些公司在大数据分析时代的价值,才引起了一番战火连连的收购热潮,Teradata收购Aster Data、IBM收购Netezza、EMC收购Greenplum、SAP收购Sybase、HP收购Vertica。
技术上,MPP Share-nothing架构、列存储、数据压缩等名词越来越被推崇,成为数据仓库设计的重要原则。
硬件上,一体机开始流行起来。随着内存、SSD价格的不断降低,网络技术的不断提高,许多数据仓库厂家通过软硬件集成设计,利用硬件优势来弥补或提高数据仓库性能。比如Oracle Exa系列和BigData Appliance、IBM Netezza、EMC DCA、Teradata、SAP HANA等等。
2.3 NoSQL、NewSQL的兴起
NoSQL的出现开辟了数据库的新思路,它良好的水平扩展性、支持海量数据、Schema-free、简单API接口等特性,使其得到了广泛的应用,尤其是互联网行业。NoSQL主要分为四大家族,如下图所示:
NoSQL一出,确实给RDBMS巨大的冲击,然而NoSQL真的是RDBMS的终结者,将一统江湖?未免高兴的太早,当我们在应用中才发现,NoSQL并不能解决所有问题。比如没有了SQL的支持使得开发和应用难度提高、很多场合仍然需要事务保证、NoSQL大部分为开源产品技术不成熟缺乏商业支持等。
这个时候,又蹦出来一个新物种:NewSQL。NewSQL与NoSQL的思路不同,NoSQL试图完全放弃关系模型,从设计之初就考虑水平扩展,摒弃了一些不必要的特性如事务、SQL语言等。而NewSQL仍然保持关系特性,利用架构或其他手段来弥补扩展性。这些产品有VoltDB(Stonebraker开发的)、SchoonerSQL、MySQL Cluster等等。
2.4 Hadoop的崛起
脱胎于Google MapReduce的Hadoop,已成为了大数据时代的最耀眼的主角,这两年出足了风头。Hadoop的巨大成功取决于这么几大优势:
- 低成本。开源产品,无需花大价钱购买商业数据库。
- 高可扩展性。Hadoop集群可轻易扩展至上千节点,支持海量存储和分析。
- MapReduce。MapReduce框架简化了海量数据处理的复杂度。
- 健康的生态链。Hadoop已经形成一个完整而又健康的生态链,使得Hadoop各组件不断完善和成熟。
目前,Hadoop已经成为大数据生态环境中不可或缺的一环,是拥有海量数据处理需求的公司的标准配置,许多商业创新和产品创新也都是围绕着Hadoop展开的。目前已经形成了一个完整的生态系统,并且在Yahoo/eBay/Facebook/Baidu/Taobao等各IT公司大规模应用。
2.5 结论
面对大数据,传统IT已经告别了RDBMS一统天下的格局,呈现出百家争鸣的格局,下图信息量很大,大致归纳了目前数据库领域的产品形态。
3 大数据处理之我见
3.1 大数据处理两大阵营
从上面的分析可见,个人认为大数据处理基本上有两大阵营:
- 分析型RDBMS:主要是数据仓库,用于结构化数据存储与分析,商业产品有Oracle Exadata、EMC Greenplum、IBM Netezza、SAP SybaseIQ、HP Vertica、Teradata等;开源项目有C-Store、MonetDB、VectorWise、Infobright等。
- Hadoop/NoSQL生态系统:主要用于非结构化数据存储与分析,核心是MapReduce。
两大阵营各有优劣势:
- 分析型RDBMS 技术成熟,包括关系理论、SQL标准、列存储、索引等,在传统OLTP RDBMS基础上的下一代演进,但面对海量数据仍然有些力不从心,扩展性不够好,对于非结构化数据只能先进行ETL加载进库后才能分析。
- Hadoop轻松可扩展到上千节点,支持海量数据,MapReduce框架非常方便的分析非结构化数据,但MapReduce处理延迟大,生态系统仍然不够完善,技术尚不成熟,只适合做离线分析。
目前两大阵营有合作融合的趋势:
如Oracle和Cloudera合作使Exadata集成Hadoop、EMC Greenplum和MapR合作推出GreenplumHD及UAP平台、Microsoft和Hortonworks合作将SQL Server2012集成Hadoop,Sybase IQ15.4/Netezza/Asterdata等均集成Hadoop MapReduce。
3.2 大数据处理架构
谈架构有点心虚了,其实是希望将大数据处理的一些关键技术进行分层和归类,捋清楚各自的优劣势,以便在应用选择时对症下药、扬长避短。
我们将从数据的生命周期分层对每个组件进行解释。数据的生命周期可分为这么几个阶段:数据生成(数据源)、数据捕获、数据存储与处理、应用。
3.2.1 数据源
主要的数据源可以分为两大类:
- 传统的结构化数据:如我们日常用到的ERP、SCM、CRM系统数据,这些数据均是在RDBMS中结构化存储,也是我们较熟悉的,在传统IT中利用率较高。
- 非结构化/半结构化数据:如RFID传感器产生的数据,Blog、Email等网络数据,以及图片视频等,这些数据在传统IT时代没有得到足够的重视而被抛弃,然而其量远大于结构化数据且蕴含着巨大的价值。
3.2.2 数据捕获
结构化数据往往是通过ETL工具,进行抽取和转换并加载到数据仓库中。而对于非结构化/半结构化数据,我们将直接加载到Hadoop中进行处理,常用的工具如Nutch的爬虫(抓取网页数据)、Flume和Scribe(分布式日志采集系统)、Chukwa(捕获运行状态用以系统监控)。
3.2.3 数据存储
在上一节,我提到过,目前数据处理基本上分为两大阵营,所以在数据存储与处理这个层面上,主要是Hadoop/NoSQL系和分析型RDBMS系。
Hadoop/NoSQL系用以存储非结构化和半结构化数据,分析型RDBMS系用以存储结构化数据。
任何技术都不是孤立的,各有各的优势,因此,这两大系也有相互借鉴的成分。如越来越多的数据仓库开始集成Hadoop,如Oracle的大数据机集成Hadoop和Oracle NoSQL,Sybase IQ最新版本15.4采用4种不同的方式集成Hadoop并内置了MapReduce API、其他如Greenplum、Teradata等通过Hadoop集成来支持半结构化/非结构化数据的分析。而Hadoop MapReduce之上也有类SQL的封装如Hive、Pig、JAQL,以便于分析人员处理。
为了便于应用从Hadoop和分析型RDBMS中导入导出,开源了一些工具,比如Sqoop(目前已成为Apache的顶级项目)和Hiho。
3.2.4 数据处理
针对不同的应用,主要有三类:
MapReduce:用以对响应延时要求不高的离线批处理应用,比如日志分析。
实时计算:用以应对对实时性要求很高的应用,比如广告点击流等。
SQL:用于关系数据库的交互式处理。
3.2.5 应用
这部分不过说了,应用很多,比如数据检索、BI分析、日志分析等等。
4 总结
不管是数据仓库、NoSQL、还是Hadoop,均是应对大数据的三个特征带来的挑战而生。
1. Volume的挑战:传统RDBMS由于扩展性不够好,无法支持海量数据,最多支持百GB级数据;数据仓库采用列存储并进行压缩大大节省了存储成本,从而可以支持TB级数据;NoSQL以及Hadoop的HDFS/HBase天生分布式,支持高扩展性,因此可以支持到PB级数据。
2. Velocity的挑战:传统RDBMS由于事务的限制,难以应对高并发,尤其是在数据量大时,响应延时急剧增大;数据仓库一般采用MPP架构,来并行的处理,甚至通过硬手段如一体机、大内存来降低处理延时;NoSQL/Hadoop则从另外一个角度解决这个问题,大部分NoSQL对事务的约束没有RDBMS那么严格,甚至采用最终一致性,从而降低了处理延时。但是,Hadoop的MapReduce是针对批处理而设计的,因此在实时性上不够好,从而产生了流计算系统如Yahoo S4!、Storm等。(实时计算,目前我了解的不多,正在向这个方向努力)
3. Variety的挑战:这个很容易理解,RDBMS、数据仓库只能处理结构化数据,而新兴的Hadoop/NoSQL则能够很好的处理非结构化/半结构化数据。
4. Value的挑战:说了这么多,挖掘数据中的Value才是我们的最终目的。
综上,大数据变革了IT,面对大数据,我们在选择数据处理架构时,应当根据业务需求、根据数据的形态进行选择。下图从Volume和Velocity两个维度,并结合不同的场景,给出了一个参考。





