1.5
大数据技术与工具

1.5.1
大数据处理流程

大数据涉及的数据类型繁多,数据量巨大,需求不同用到的大数据技术也不尽相同,但总的来说,都离不开数据采集、存储、处理、应用等关键环节。根据大数据处理的数据流向,可将其分为数据采集、数据预处理、数据分析和挖掘、数据可视化和解释等过程,如图1-3所示。使用合适的工具和方法对大量的异构数据进行采集,对获取的数据进行变换、清洗等预处理;将结果按照一定的标准存储在本地磁盘或网络存储设备,并通过软件进行管理;根据任务采用合适的数据分析和挖掘技术对数据进行处理,从中提取规则和知识,用于指导决策;引入数据可视化等技术,为用户直观展示数据挖掘的结果,并解释数据中蕴含的现象和规律。

图1-3 大数据处理基本流程

1.5.2
大数据行业全景图

著名风险投资机构FirstMark Capital的合伙人马特·图尔克堪称大数据行业的观察家,其自2012年起定期更新大数据和人工智能行业全景图,用于跟踪大数据和人工智能行业的现状和发展趋势,主要涵盖基础设施、开源框架、数据资源、企业应用和分析工具等内容。马特·图尔克认为我们正在见证一个新的大数据时代,其中大数据技术用于处理核心数据工程带来的挑战,机器学习用于从数据中提取价值。马特·图尔克发布的2012年、2016年大数据行业全景图如图1-4所示,从图中可以看出2012年只有几十家公司纳入全景图。2021年纳入全景图的大数据公司约有1000家,通过插图已很难清晰呈现相关公司的图标,感兴趣的读者可以下载全尺寸高清图像查看。这些图概览性地记录了大数据行业的发展与更迭,也见证了十年来大数据生态系统的蓬勃发展。在新冠肺炎疫情冲击全球时,很多大数据公司不但存活下来,而且随着数据技术的转型而发展得很好。

图1-4 2012年、2016年大数据全景图

大数据产业是以数据及数据蕴含的信息价值为核心生产要素,通过数据技术、数据产品、数据服务等形式,使数据与信息价值在各行业经济活动中得到充分利用的产业。随着大数据技术的不断进步和应用的持续深化,以数据为核心的大数据产业生态正在加速构建。基于数据价值的实现流程,可以将大数据产业分为大数据资源供应、大数据设备提供、大数据技术服务和大数据融合应用四个层次。其中,大数据资源供应业是指大数据产业链前端的数据资源提供方,包括移动互联网行业、金融业、交通运输业等能够产生并拥有大量数据资源的行业;大数据设备提供业是指大数据产业链的硬件设施提供方,包括光缆、网络设备、高性能计算、集成电路等大数据所需的硬件设备的设计、制造、租赁、批发和零售等行业;大数据技术服务业是指贯穿大数据产业链的软件及技术服务提供方,包括前端采集、数据清洗、大数据管理分析平台建设、商务智能挖掘等相关技术服务和软件研发行业;大数据融合应用业是指大数据产业链后端的数据应用方,包括与互联网、金融、交通、政务等行业的融合,为不同行业提供相应的服务和解决方案,以实现特定的经济目标。

在国内,首席数据官联盟自2015年起每年都会发布一版《中国大数据企业排行榜》,从商业应用、行业综合、智慧城市、物联网和平台技术等维度分析国内大数据行业的现状与发展趋势。2020年12月发布的第7版中国大数据产业地图。2021年,大数据产业生态联盟发布了《2021中国大数据产业发展地图暨中国大数据产业发展白皮书》,分析了中国大数据产业发展演进、政策体系、园区建设、人才培育等产业发展要素情况,研判了大数据在软硬件产品、基础设施和应用服务等领域的热点布局。

1.5.3
大数据分析平台

大数据的技术实现涉及如何获得数据,并通过分析和处理从数据中发现知识和价值。整个技术流程离不开大数据分析的基础工具和平台。本节重点介绍经典的数据分析工具SAS(Statistical Analysis System,统计分析系统)和开源的分布式大数据处理框架Hadoop、Spark。

1.SAS

SAS于20世纪60年代创建,是全球商业分析领域的领导者,主要用于进行数据管理、商业智能、预测分析和规范性分析。SAS把数据存取、管理、分析和展示有机地融为一体,其功能强大,统计方法全面,几乎囊括了所有最新的分析方法,分析方法通过过程调用来实现,许多过程同时提供了多种算法选项。SAS使用简便,操作灵活,通常使用简短的语句就能实现复杂的运算。SAS是端到端解决方案的集成平台,为信息管理、高级分析和报告提供了一整套软件产品、服务和集成技术。SAS解决方案几乎可以服务于每一个业务领域,它是临床数据分析的行业标准。另外,SAS还提供跨领域和跨行业的业务解决方案,130多个国家超过60000家公司都在使用SAS。

2.Hadoop

Hadoop起源于Apache软件基金会的Nutch项目,它是开源的分布式系统基础架构,用户可以在不了解底层细节的情况下进行分布式程序开发。它充分利用计算机集群的力量,实现了海量数据的高速存储和计算,其最核心的设计是实现了MapReduce计算模型和分布式文件系统(Hadoop Distributed File System, HDFS)。Hadoop具有高可靠性、高效性、高可扩展性、高容错性和低成本等特点,因而从设计之初就受到了很多国际大公司的青睐。例如,Yahoo使用Hadoop集群支持其广告系统、Web搜索、用户行为分析等业务;Facebook使用1000个节点的Hadoop集群存储内部日志和多维数据,并将其作为数据分析和机器学习的数据源;Cloudera公司专门从事基于Hadoop的数据管理软件销售和服务,2009年他们聘请Hadoop的创始人Doug Cutting担任公司的首席架构师,从而提高了Cloudera公司在Hadoop生态系统中的地位;百度使用的Hadoop节点已经有上万台,每天处理上千TB的数据量,为其网页数据挖掘、系统日志分析和推荐引擎系统等业务提供统一的计算和存储服务;阿里巴巴利用Hadoop集群存储并处理电子商务交易的相关数据,为其广告系统、数据魔方、推荐引擎等提供支持。

经过多年的发展,Hadoop已经成为一个成熟的生态系统,除了MapReduce和HDFS两个核心项目之外,还包括分布式集群管理系统Ambari、数据仓库Hive、分布式存储数据库HBase、分布式协作服务ZooKeeper、数据库ETL工具Sqoop、数据分析系统Pig、数据挖掘算法库Mahout、日志收集工具Flume等,如图1-5所示。

图1-5 Hadoop生态系统

3.Spark

Spark于2009年由加州大学伯克利分校AMP实验室发起,是专为大规模数据处理而设计的快速分布式计算引擎。Spark是一种与Hadoop相似的开源集群计算环境,拥有与Hadoop相同的优点,但其中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的算法。Spark启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载,可用来构建大型的、低延迟的数据分析应用程序。Spark的主要特点如下。

(1)速度快:使用最先进的有向无环图(Directed Acyclic Graph, DAG)调度程序、查询优化器和物理执行引擎,实现了批处理和流式数据处理的高性能。

(2)易用性:可以使用Java、Scala、Python、R和SQL(Structured Query Language,结构化查询语言)快速编写应用程序。Spark还提供了80多个高级运算符,使构建并行应用程序变得更容易。

(3)通用性:提供了大量的库,包括Spark Core、SQL和DataFrames,以及用于机器学习的MLlib、GraphX和Spark Streaming,可以在同一个应用程序中无缝组合使用这些库。

(4)无处不在:可以在Hadoop、Apache Mesos、Kubernetes、单机或云端等平台上轻松运行,且可以访问多种不同的数据源。

1.5.4
大数据编程语言

通过编程实现大数据相关应用和开发是不可避免的,大数据支持多种主流编程语言,如C++、Java、Python、Scala和R等,这里重点介绍几种较为常用的编程语言。

1.Java

Java是一种面向对象的程序设计语言,长期在各类编程语言排行榜中占据前三名的位置。Java继承了C语言的大部分语法,但其在使用上要更加简单,同时Java还具有分布式、跨平台、高性能、多线程、动态性等优点,因此被应用到了众多企业大型系统中。

Java与大数据存在着较为紧密的联系。目前最流行的大数据开发平台Hadoop就诞生于Java高手Doug Cutting之手,因此采用Java编写Hadoop应用程序有着得天独厚的优势。另外,由于Java在跨平台方面的优势,很多大数据处理和计算框架,如Flink和Spark等也支持用Java编写应用程序。由于Java在大数据应用中的广泛应用,社会上流行一种新的学习方向——Java大数据。

2.Python

Python是一种通用的、面向对象的编程语言,已经逐渐征服科学界,成长为成熟的数据处理和分析专业软件。Python是一种开源的、面向对象的、跨平台的编程语言,与其直接竞争对手(如C++和Java)相比非常简洁,能在非常短的时间内创建工作软件原型。

目前,Python已成为数据科学不可或缺的工具,其主要特性如下。

(1)Python非常简单,易学易用,什么编程风格的人都可以使用Python编程。

(2)Python完美兼容多种操作系统和开发平台,如Windows、Linux和Mac OS等,即使在小型分布式系统和物联网微型计算机系统上也不用担心它的可移植性。

(3)虽然Python是解释性的语言,但与其他主流数据分析语言(如R和MATLAB)相比具有毋庸置疑的速度优势。此外,还可以通过编译器将Python代码转换成效率更高的C语言代码。

(4)Python具有极小的内存占用和优秀的内存管理能力,可以处理内存中的大数据。当进行数据加载、转换等操作时,会使用循环回收器自动清理内存中的数据。

(5)Python可方便地集成不同的工具,为多种编程语言、数据策略和分析算法提供真正的统一平台。

(6)Python具有丰富的第三方库,由于使用Python的用户不断增多,Python社区每天都会发布新的工具包或进行相应改进,这使得Python生态系统日益丰富。

3.R

R是专门用于统计分析和绘图的开发语言和操作环境,具有数据建模、统计分析和可视化等功能。国际上很多知名的数据科学公司都在使用R,如Facebook、谷歌、IBM等。其主要特点如下。

(1)免费开源:安装程序、源代码、文档资料都可以通过其网站或镜像网站自由下载。

(2)有完整的程序设计语言:面向对象的统计编程语言,具有完善的数据类型及运算操作,语法通俗易懂,结构自由松散,可以通过编写函数扩展现有功能,因此其更新速度比SPSS、SAS等统计软件要快得多。

(3)交互式数据分析:除图形输出外,大部分操作在同一窗口完成,若语法有错误会马上得到提示,有历史命令记忆功能,可以随时再现、编辑修改;图形输出功能强大,可以输出多种统计图形,图形可以直接保存为图片或PDF文件。

(4)有丰富的网络资源:官网包含一万多个软件包,涉及统计和数据分析的各个方面,其功能不输SPSS和MATLAB等专业软件,而且广大科研工作者还在源源不断地贡献自己的算法和资源。