论文部分内容阅读
当今时代是大数据的时代,遍布全球的数据网络每时每刻都在处理并存储着海量的数据。截至2017年,整个数据网中共存有2.7ZB的数据,而且其增长速度每年都会翻一番。人们越来越注意到这些数据中隐藏着的内涵和价值。数据挖掘、机器学习等若干学科雨后春笋般兴起发展。不论是哪种学科,数据流水线式的处理机制被越来越广泛地接受和使用。尤其对于大数据分析(Big Data Analytics)来说,编写和改进一套完整的数据分析流水线(Data Analytic Pipeline)和科学工作流(Scientific Workflow)是大数据工程师和数据分析科学家们的主要任务。为了完善这一整套运行机制,人们提出了“源(Provenance)”的概念。即,数据处理工作流的历史记录(包括操作的和数据的)。这些记录可以帮助数据分析师们更好地了解数据处理流水线的工作细节,使得对数据处理工作流程的分析粒度逐步变小,更加便于流水线的逐步调试和修改。然而,目前对于大数据的“源”信息的管理工具和平台还并未得到很好的发展。目前已有的工具基本都是在图数据库(Graph Database)的基础上进行的架构和开发,只适应于相对较为固定的流水线结构和语义(Semantics)。而对于现在越来越复杂的流水线来说,调试和语义变更变得越来越频繁,而且流水线的规模也在迅速增长,一些被称为“技术债务(Technical Debt)”的问题和现象越来越明显。其次,数据量的极大膨胀让用户很难决定何时存储何种中间结果,对不同存储方案的变更也会导致大量的成本。另外,流水线的评价体系(对数据和操作)还尚未引起足够的重视,现在并没有一条统一的标准和方案来评价流水线处理的质量和能力。而这正是现在大数据分析面临的主要问题之一。人为失误,恶意攻击,这些都会导致数据质量下降,数据处理可信度(Trustworthiness)的丧失。本文将主要从两个方面入手解决大数据源信息的采集和评估问题:1)设计并构建基于流(Stream)的源信息系统:LogProv;2)在系统的基础上设计并实现对于工作流的评价机制。LogProv的框架主体基于Apache Pig以及Hadoop,它主要由四个部分组成:1)分布式计算集群;2)分布式存储集群;3)日志仓库;4)统筹调度其他三个部件以及提供系统服务接口的中央服务器。计算集群主要在Apache Pig引擎的调度下完成基本的数据处理任务,输出中间及最终结果,同时产生工作流的语义信息。语义信息由Pig中的用户定义函数(User Defined Functions,UDFs)捕捉,并告知中央服务器,与此同时,通知存储集群记录中间及最终结果。服务器接收到语义信息之后将其存储在日志仓库中,并为匹配的中间或最终结果分配全局唯一的标识符。在流水线处理完成之后,服务器还将接受用户发起的查询请求,查询日志仓库和数据仓库,恢复工作流语义信息或返回数据结果。目前提供的查询的方式与SQL查询的语法相同。通过构造简单的工作流,LogProv统计了墨尔本基隆地区无线热点的热度顺序。整个系统完整地根据用户制定的需求保留了工作流的语义信息,并正确地存储了中间数据以及最终的结果,整个流程的性能损耗不超过10%。LogProv对于用户的查询请求,反应速度也很快,包括网络传输损耗,查询结果的返回时间均在毫秒级别。LogProv本身集成了基于Elo算法的反馈评价机制,它将同一目标的不同实现路径定义为独立的竞争者,每个竞争者根据裁判的不同反馈可以获得不同加分或者减分,最后根据每个路径的得分情况,评价选择最优的一条路径。测试显示,该算法可以很好地区分不同的路径上的操作节点。对于数据节点的评价机制,本文研究了基于统计距离(Statistical Distance)的异常检测(Anomaly Detection)机制。该机制通过学习同一数据节点中的数据分布特征,分析每个数据群的分布相似度,进而归约为一维单点异常的检测问题进行检测。而且,通过统计距离归约后的单点异常问题具备更好的数学性质,因而比一般单点异常处理难度更低,精度更高。对于群异常(Collective Anomaly)检测算法的测试采用的是淘宝网店交易数据,从正常数据中检测刷单行为。测试显示,该算法的分类器效果非常明显,灵敏度高于一般刷单程度,而且可以动态适应交易特征的变化,具有很高的实用价值。