1.4 大数据的思与辨
我们可以从各个维度提炼和概括大数据的多种特点。IBM曾总结出大数据的5V特性,即Volume(容量)、Velocity(高速)、Variety(多样)、Value(价值)、Veracity(真实性)[10]。不过不管如何定义大数据,始终逃离不了“数据量大”这一最根本的特征。
大数据的大到底有多大?下面给各位读者一个量化的感受:2010年左右普通PC机的硬盘容量大概在512GB~1TB,到了2016年,硬盘容量已经达到TB级别,天猫或者京东上售卖的硬盘容量普遍在1TB~3TB。以笔者参与的某项目为例,Nginx服务器每天产生的日志多达约500TB,每个星期大约有3~4PB的数据量。为了实现特定的业务分析需求,该类日志数据需要存储6个月,也就是最多的时候有90PB的数据需要分析和处理。
因此,相比于“小数据”分析立足于如何使用更有效的理论和模型;“大数据”的分析则要先解决两个问题:如何存储和如何计算,最后才是如何分析。
需求推动技术的发展,技术促进需求的实现。为了解决海量数据的存储问题,2000年到2010年期间以谷歌、Facebook、百度等巨头公司为代表,掀起了一股云计算的热潮。云计算用数以万计的普通机器,组成大规模集群,解决巨大数据量的存储和计算问题。大浪淘沙之后,在2010年左右,云计算的概念被广为接受,并最终被分成IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)三种技术体系。IaaS解决大规模集群的管理,利用虚拟化技术在一台机器上虚拟多台机器,实现资源的合理利用。IaaS服务商主要对外提供虚拟网络、虚拟机等基础设施服务,比如亚马逊的AWS云虚拟机,阿里云等。PaaS处于IaaS层之上,使用IaaS提供的基础设施,构建分布式文件系统以及分布式计算平台。这类服务比较有代表性的有谷歌的GFS文件系统,Apache的Hadoop系统等。SaaS则处于PaaS之上,利用PaaS提供的存储及计算平台实现丰富多样的应用,比如百度网盘,亚马逊商品的即时推荐等。
关于存储,日志数据、文件数据等不可修改的数据,常用Apache的HDFS存储;网盘类数据则较常用OpenStack的Ceph存储。不管用哪种组件,其目标都是在“能存储”的前提下,提升各种场景下的I/O速度。
关于计算,离线计算最常用的计算模型是MapReduce。基于该模型,Apache实现了Hadoop分布式系统(HDFS是其一部分),适用于离线分析;同时,流式计算也有一些代表的组件,如Storm、Spark Streaming等。
关于分析,大数据的分析理论以及建模思路与“小数据”分析并无差别,但它需要结合存储与计算的组件,来决定分析是否可实施。举一个最简单的例子,假定有1MB的数据,数据格式为每行记录一个数值,求该数据中最大的记录值。求解的过程十分简单:读取文件数据,对比获取最大。但是,假如有10PB的数,那又该如何计算?单台机器已无法存储这样的数据,更不可能简单地全部读取一遍。这时,就需要综合使用上面提到的所有技术。首先,数据不断累积,并被录入HDFS文件系统;其次,使用Hadoop平台的MapReduce计算模型,统计集群各个存储节点的局部最大值;在经过多次MapReduce过程之后,可以把数据量缩小到单台机器可以存储的范围,最终计算出全局最大值。从此例中可以看出,“大数据”分析的理论依然属于统计分析领域的理论和知识范畴,只是在实施的过程中,需要灵活运用大数据的技术来完成。同时,由于受计算模式、存储方式的限制,很多数据分析的方法,无法有效地应用在“大数据”上。
大数据时代,数据的分析不再着眼于抽样,而是用全量取代了样本[11]。同时,工业界和学术界也在研究和探讨更加便利的大数据处理方案,以便更多的理论和策略能够在海量数据集上运作。笔者以为,在大数据存储和计算较为完善的今天,有效地运用数据分析、数据挖掘和深度学习,创造更神奇的数字化世界、人工智能世界是大势所趋。