基本处理模型
大数据技术是一种帮助数据实现价值的技术手段。挖掘出数据中的价值,才是大数据的应用目标。大数据技术虽然是新兴的数据处理技术,但它与传统的数据仓库等技术相比,数据处理的核心模型并没有发生多大的变化。以前做过传统的数据仓库管理等工作的人转行做大数据,就会发现后者仅仅是处理步骤对应的技术产生了变化。
传统的数据类问题的解决可以分为四个基本步骤:数据采集、数据存储、数据分析和数据使用。前三个步骤都很直接,而所谓数据使用则有不同的表现形式:可能是用图表对数据进行展示;也可能是利用分析结果做出某种决策;还有可能带来另一轮的采集、存储、分析、使用过程,即在前一轮分析的基础上对结果进行新一轮处理。以前文提到的监控视频数据为例,第一轮采集的数据可能是视频流本身。这些视频数据和元数据(例如采集时间、采集地点)需要被保存下来,然后根据不同需求做出不同的分析,例如分析其中车辆的信息、车牌号码、是否违章等。至于这些数据的分析结果,可以是按时间统计的车辆通行量的图表;也可以是提交给交通管理部门的违章信息;还可以根据不同时间和不同位置的通行情况进一步分析车辆,从而画出车辆的运行轨迹图,或者分析道路拥堵情况。
这四个步骤也构成了大数据处理的基本模型(如图1-1所示)。
图1-1 大数据处理的基本步骤
这个模型同具体的技术没有任何关系,只是一个概念。不过,这个概念体现了大数据处理的必要元素。其中数据的采集源可以有很多种,可以是工控设备的监控,可以是物联网的探头,也可以是日志信息或者其他公司的商业智能(Business Intelligence,BI)数据,当然也可以是某个大数据系统的分析结果。数据存储要考虑的是采集到的数据的保存问题。当然,不保存原始数据也是一种存储策略。根据需求不同,数据分析采用的形式也千差万别。有的也许是统计、有的也许需要做规划建模,而有的情况下则需要引入深度学习和其他人工智能处理方式。
从另一个维度看,这个数据处理的概念模型还可以被看作“数据—信息—知识—智慧”金字塔模型。它是一个量级由大至小、价值由低到高的数据模型。我们把大数据处理步骤的概念模型,(在一定程度上)对应放到这个金字塔数据模型当中,得到图1-2。
图1-2 数据价值的金字塔模型
对应图1-1中的数据采集、数据存储、数据分析、数据使用四个步骤,围绕着数据价值的提升,我们需要对数据进行采集、导入/预处理、统计/分析和深度挖掘。这四个步骤对应于图1-2金字塔模型的四个步骤,更加偏向于工程应用。其中的导入/预处理是数据存储的前置核心步骤,而深度挖掘是为了提升数据价值属性和未来使用的常规方法。
采集
大数据的采集一般分为系统日志采集、网络数据采集和其他数据采集。目前很多公司都有自己的海量数据采集工具,均采用分布式架构,能满足每秒数百兆字节的日志数据采集和传输需求,如Chukwa、Flume、Scribe、Kafka等工具也常常用于构造数据处理总线。网络数据采集指通过网络爬虫或网站公开API等方式从网站上获取数据信息。对于网络流量的采集可以使用深度报文检测(Deep Packet Inspection,DPI)或深度/动态流检测(Deep/Dynamic Flow Inspection,DFI)等带宽管理技术进行处理。其他数据采集,如企业生产经营数据或学科研究数据等保密性要求较高的数据,可以通过与企业或研究机构合作,使用特定系统接口等相关方式采集数据。
导入/预处理
对海量数据进行分析时,还是应该将这些来自前端的数据导入一个大型分布式数据库或者分布式文件系统,并且可以在导入的同时做一些简单的清洗和预处理工作。在导入时使用Storm和Spark Streaming来对数据进行流式计算,满足部分业务的实时或准实时计算需求。导入与预处理过程的特点和挑战主要是导入的数据量大,每秒钟的导入量经常高达百兆字节,甚至千兆字节级别。
统计/分析
统计分析的主要特点和挑战是分析涉及的数据量大,其对系统资源和I/O会有极大的占用。可利用分布式数据库或者分布式计算集群来对海量数据进行普通的分析和分类汇总等,以满足常见的分析需求。在这方面,一些实时性需求会用到GreenPlum、Exadata等,而一些批处理或者基于半结构化数据的需求可以使用Hadoop。
挖掘
数据挖掘主要是对现有数据进行基于各种算法的计算,从而起到预测(Predict)的效果,同时满足一些高级别数据分析的需求。比较典型的算法有用于聚类的Kmeans,用于统计学习的支持向量机(Support Vector Machines,SVM)和用于分类的朴素贝叶斯(Naïve Bayes)。数据挖掘主要使用的工具有Hadoop的Mahout和Spark的MLlib等。