第一节 概述

对大数据的处理超出了传统数据库软件工具的能力范围,需要新的技术和工具支撑大数据的获取、存储、管理和分析。

一、大数据的处理流程

大数据处理流程一般包括数据采集、数据预处理、数据存储、数据分析、数据可视化及数据应用等环节,如图2-1所示。

图2-1 大数据处理流程图

数据采集是指用相应的设备和软件从不同数据源,包括互联网、数据库、文件系统、服务器、第三方软件、传感器等采集结构化、半结构化或非结构化的数据。采集到的原始数据通常存在缺失、冗余、重复、噪声、冲突等问题,需要进行预处理,包括清洗、消噪、集成等步骤提高数据质量,保证后续数据分析结果的准确性与可靠性。数据存储是将经过预处理的数据以某种形式保存到计算机内部或外部的存储介质上,为数据分析提供可靠、规范、完整、一致、准确的格式化数据。数据分析主要采用适当的统计分析、机器学习等方法对大数据进行分类汇总、归纳统计和挖掘建模,发现大数据内部蕴含的关联信息和规律,形成对事物的新知识。数据分析是大数据处理流程中的关键环节,决定了大数据的价值和可用性。数据可视化是将大数据以图形图像形式呈现,并利用数据分析和开发工具发现其中未知信息的处理过程。数据应用是将数据分析结果应用于业务场景下的管理决策、战略规划等过程,是对大数据分析结果的检验与验证,对数据分析具有引导作用。

二、大数据核心技术

完成大数据的处理流程需要大数据平台的支撑。与大数据处理流程的各个环节相对应,大数据平台架构自下向上通常分为数据采集层、数据处理层、数据分析层、数据访问层及应用层。此外还包括一个纵向的管理平台层,如图2-2所示。其中包含的大数据核心技术包括采集技术、存储技术和计算技术。

图2-2 大数据平台架构

(一)大数据采集技术

数据采集层主要采用ETL(extract,transform and load)工具采集数据。

由于大数据来源多样,数据量巨大且类型、结构差异巨大,需要首先通过抽取(extract)技术从各数据源的原始数据中提取数据分析需要的数据,丢弃不重要的或错误的信息。提取后的数据需要进行数据清洗以过滤和剔除错误数据和异常数据。同时,为满足应用场景和数据分析工具对数据格式的不同要求,有时还需要对清洗后的数据进行数据转换(transform),将其转换为适于存储和分析的数据格式。最后,按照预先定义的数据仓库模型,将数据加载(load)到数据仓库,为后续的数据分析提供完整、准确、一致性好的高质量格式化数据。

大数据的主要来源包括日志文件、网络和数据库。目前常用的日志数据ETL工具有Flume、Kettle、Kafka等,它们可以收集、集成和转移大量日志数据,并提供离线处理或在线实时分析功能。网络数据采集主要通过网络爬虫和一些网站平台提供的公共应用程序接口(application programming interface,API)从网站上获取数据。目前常用的ETL工具有ApacheNutch、Crawler4j、Scrapy等框架,它们从网页文件中提取非结构化和半结构化数据并清洗、转换成结构化数据,将其存储为格式统一的本地文件数据。常用的数据库ETL工具是Hive,是基于Hadoop的一个数据仓库工具,可以存储、查询和分析存储在Hadoop分布式文件系统中的数据。图片等非结构化大数据在第三章相关内容进行介绍。

(二)大数据存储技术

大数据存储技术主要包括分布式文件系统和分布式数据库。分布式文件系统管理的数据分散存储在不同的设备上,设备间通过网络连接。目前主要的分布式文件系统是Hadoop分布式文件系统(Hadoop distributed file system,HDFS)。分布式数据库包括支持传统数据规模的关系型数据库和支持并行处理的非关系型数据库NoSQL(not only SQL)。常用的分布式非关系型数据库包括HBase、MongoDB、Redis等。

(三)大数据计算技术

大数据计算技术主要包括批量计算和流式计算技术。批量计算是指统一收集数据,存储到数据库中,然后对数据进行批量处理的数据计算方式,适用于实时性要求不高、离线计算的场景,如数据分析、离线报表,主要代表技术是Hadoop MapReduce。流式计算是对随时间动态变化、价值随时间流逝而降低、必须实时计算给出秒级响应的数据流进行处理,适用于时效性要求较高的场景,如实时推荐、业务监控等。目前主流的流式计算框架有Storm、Spark Streaming、Flink等。

三、大数据技术的相关概念

大数据技术有两个基本概念:分布式存储和分布式计算。

(一)分布式存储

分布式存储是指存储设备分布在不同的地理位置,数据分散存储到就近的存储设备上,而不是集中存放在单一的存储服务器上。这些分散的存储资源通过网络连接构成一个虚拟的存储设备。用户访问分散存储的数据就像在本地机器上访问完整数据。

分布式存储方式解决了大数据单机存储的容量限制问题,可以支持太字节级(Terabyte,TB,240字节)和拍字节级(Perabyte,PB,250字节)规模的数据存储。具有如下特点:

1.可扩展

存储设备可以根据需求扩展到几百台甚至几千台规模,系统的整体性能随设备数量增加线性增长。

2.低成本

分布式存储具有容错和负载平衡机制,允许存储设备使用低性能的普通计算机,从而降低设备成本。同时系统的线性扩展能力可以实现集群的自动运行维护,降低运维成本。

3.高性能

分布式存储性能优于传统的集中存储方式。

4.易用性

分布式存储系统提供方便易用的对外接口及完善的监控、运维工具,方便与其他系统集成。

(二)分布式计算

大数据的处理分析需要巨大的计算能力。如果采用传统的集中计算方式会耗费相当长的时间甚至无法处理。分布式计算的思想与分布式存储类似,将计算任务分解成多个小任务,分发到联网的多台机器上,利用这些机器闲置的处理器和内存等计算资源进行计算。

如图2-3所示,处理一个包含600万条用户行为记录,数据量共30GB的日志文件时,传统的单机处理方法是从文件中逐条读取每个记录进行分析计算,直至读取和处理完全部记录。假设整个处理过程需要耗费30小时,平均每处理1GB数据需要1个小时。如果采用分布式存储和分布式计算方式,则先将600万条数据分散存放在30台机器上(假设),每台机器存放20万条数据约1GB的数据量。再将统计分析数据的计算任务拆分成30个计算任务,分配到每台机器上执行,将各台机器的计算结果汇总得到最终的分析结果。每台机器用1个小时处理1GB数据,30台机器同时执行计算任务,则所有数据用1个小时就可以计算完成,计算速度是传统方法的30倍。这种分布式计算方式可以将超大规模数据集的计算效率提升几十倍甚至几百倍。

图2-3 分布式计算示意图