1.1 大数据的概念与关键技术
随着大数据时代的到来,“大数据”已经成为互联网信息技术行业的流行词汇。本节介绍大数据的概念与关键技术。
1.1.1 大数据的概念
关于“什么是大数据”这个问题,学术界和业界比较认可关于大数据的“4V”说法。大数据的4个“V”,或者说是大数据的4个特点,包含4个层面:数据量大(Volume)、数据类型繁多(Variety)、处理速度快(Velocity)和价值密度低(Value)。
(1)数据量大。根据著名咨询机构IDC(Internet Data Center)做出的估测,人类社会产生的数据一直都在以每年50%的速度增长,这被称为“大数据摩尔定律”。这意味着,人类在最近两年产生的数据量相当于之前产生的全部数据量之和。预计到2020年,全球将总共拥有35ZB的数据量,数据量将增长到2010年数据的近30倍。
(2)数据类型繁多。大数据的数据类型丰富,包括结构化数据和非结构化数据,其中,前者占10%左右,主要是指存储在关系数据库中的数据,后者占90%左右,种类繁多,主要包括邮件、音频、视频、微信、微博、位置信息、链接信息、手机呼叫信息、网络日志等。
(3)处理速度快。大数据时代的很多应用,都需要基于快速生成的数据给出实时分析结果,用于指导生产和生活实践,因此,数据处理和分析的速度通常要达到秒级响应,这一点和传统的数据挖掘技术有着本质的不同,后者通常不要求给出实时分析结果。
(4)价值密度低。大数据价值密度却远远低于传统关系数据库中已经有的那些数据,在大数据时代,很多有价值的信息都是分散在海量数据中的。
1.1.2 大数据关键技术
大数据的基本处理流程,主要包括数据采集、存储管理、处理分析、结果呈现等环节。因此,从数据分析全流程的角度来看,大数据技术主要包括数据采集与预处理、数据存储和管理、数据处理与分析、数据可视化、数据安全和隐私保护等几个层面的内容(具体如表1-1所示)。
表1-1 大数据技术的不同层面及其功能
此外,大数据技术及其代表性软件种类繁多,不同的技术都有其适用和不适用的场景。总体而言,不同的企业应用场景,都对应着不同的大数据计算模式,根据不同的大数据计算模式,可以选择相应的大数据计算产品,具体如表1-2所示。
表1-2 大数据计算模式及其代表产品
批处理计算主要解决针对大规模数据的批量处理,也是我们日常数据分析工作中非常常见的一类数据处理需求。比如,爬虫程序把大量网页抓取过来存储到数据库中以后,可以使用 MapReduce对这些网页数据进行批量处理,生成索引,加快搜索引擎的查询速度。代表性的批处理框架包括MapReduce、Spark等。
流计算主要是实时处理来自不同数据源的、连续到达的流数据,经过实时分析处理,给出有价值的分析结果。比如,用户在访问淘宝网等电子商务网站时,用户在网页中的每次点击的相关信息(比如选取了什么商品)都会像水流一样实时传播到大数据分析平台,平台采用流计算技术对这些数据进行实时处理分析,构建用户“画像”,为其推荐可能感兴趣的其他相关商品。代表性的流计算框架包括Twitter Storm、Yahoo! S4等。Twitter Storm是一个免费、开源的分布式实时计算系统, Storm对于实时计算的意义类似于Hadoop对于批处理的意义,Storm可以简单、高效、可靠地处理流数据,并支持多种编程语言。Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统。Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等。由于Storm具有可扩展、高容错性、能可靠地处理消息等特点,目前已经被广泛应用于流计算应用中。
在大数据时代,许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响等。此外,许多非图结构的大数据,也常常会被转换为图模型后再进行处理分析。图计算软件是专门针对图结构数据开发的,在处理大规模图结构数据时可以获得很好的性能。谷歌公司的Pregel是一种基于BSP模型实现的图计算框架。为了解决大型图的分布式计算问题, Pregel搭建了一套可扩展的、有容错机制的平台,该平台提供了一套非常灵活的API,可以描述各种各样的图计算。Pregel 作为分布式图计算的计算框架,主要用于图遍历、最短路径、PageRank计算等。
查询分析计算也是一种在企业中常见的应用场景,主要是面向大规模数据的存储管理和查询分析,用户一般只需要输入查询语句(如SQL),就可以快速得到相关的查询结果。典型的查询分析计算产品包括Dremel、Hive、Cassandra、Impala等。其中,Dremel是一种可扩展的、交互式的实时查询系统,用于只读嵌套数据的分析。通过结合多级树状执行过程和列式数据结构,它能做到几秒内完成对万亿张表的聚合查询。系统可以扩展到成千上万的CPU上,满足谷歌上万用户操作PB级的数据,并且可以在2~3秒完成PB级别数据的查询。Hive是一个构建于Hadoop顶层的数据仓库工具,允许用户输入SQL语句进行查询。Hive在某种程度上可以看作是用户编程接口,其本身并不存储和处理数据,而是依赖HDFS来存储数据,依赖MapReduce来处理数据。Hive作为现有比较流行的数据仓库分析工具之一,得到了广泛的应用,但是由于Hive采用MapReduce来完成批量数据处理,因此,实时性不好,查询延迟较高。Impala 作为新一代开源大数据分析引擎,支持实时计算,它提供了与Hive类似的功能,通过SQL语句能查询存储在Hadoop的HDFS和HBase上的PB级别海量数据,并在性能上比Hive高出3~30倍。