论文部分内容阅读
eBay公司使用Teradata企业级数据仓库解决方案来管理业务数据,将分布在企业网络中各个信息孤岛上的数据集成在一起,提供全面的业务分析服务以及支持决策的信息。随着业务分析需求的日益复杂,各个主题域中的分析对象日益增多,数据仓库系统中需要构建的相应的数据表的数量也在急速增长。同时,数据仓库记录历史数据以反映发展历程和未来趋势这一特性,又使得每张数据表的数据量随时序增长。海量的数据存储占据着PB级的系统空间,复杂的数据查询消耗着极高的CPU资源。因此,掌握数据仓库系统中数据表之间的关系,根据数据流的特征判断数据表的使用情况,能够有效的帮助系统管理人员及时清理系统空间,减少数据冗余,降低数据处理成本。本文主要描述了基于Hadoop的Teradata数据仓库日志分析系统(以下简称为DBQL Parser日志分析系统)的设计与实现。DBQL Parser日志分析系统将Teradata数据仓库中记录用户数据查询日志的系统数据表作为分析对象,根据数据量和处理时效性等需求,将数据从Teradata数据仓库中抽取并加载到HDFS,采用Hadoop计算平台进行分布式并行处理。根据分析对象数据表的特征和处理方法,采用基于Hadoop的Cascading框架,构建管道链接形式的数据处理流程。依赖于Teradata SQL Parser API对日志中的查询语句Query Text进行Tokenize分词操作,提取用户创建、删除、数据插入或更新的目标数据表Target Table,再通过日志中其他部分的数据关联到该Target Table的数据源表Source Table,从而为数据仓库中的每一张数据表找到其上下游。同时,系统从日志中解析出记录查询脚本执行计划的相关信息,辅助对数据表的管理。本文在概述了DBQL Parser日志分析系统的项目背景、当前国内外大数据处理技术的发展现状以及系统开发使用到的Teradata数据仓库、Hadoop计算平台、Cascading框架以及Maven技术综述之后,着重对系统进行了需求分析和概要设计。本文从系统待分析的目标数据表以及获取数据表之间关系的功能点入手,通过需求列表的方式描述了对Query Text进行预处理、识别目标数据表Target Table源数据表Source Tab le、处理别名指代对象、解析Query Band等功能需求,以及任务调度、数据容量、处理时间等非功能需求。进而使用系统用例图定义了系统执行的不同行为,并对关键用例进行了详细描述。在概要设计部分,本文通过系统体系结构图和系统模块图说明了系统分层体系结构和模块化的设计思想,详细描述了各个层次、模块的功能职责以及依赖关系。本文在对DBQL Parser日志分析系统进行需求分析和概要设计之后,重点描述了系统任务调度模块、Build Cascading处理流管理模块以及Query Log Analyser日志分析模块的详细设计和具体实现过程。在系统任务调度模块中,对系统任务调度图加以详细解说,描述了系统任务的划分和自动化执行方法。在Build Cascading处理流管理模块中,详细设计类图表明了各个类之间的依赖关系,数据处理流程图展示了管道链接的逻辑过程,同时通过代码阐述了建立管道处理流和操作方法的实现。在Query Log Analyser日志分析模块中,重点描述了别名处理的算法,并给出了获取Target Table口解析Q uery Band的实现代码。目前,本文中阐述的DBQL Parser日志分析系统已经应用到实际之中。eBay Teradata数据仓库系统每天生成约30G大小的数据查询日志,如果使用单机对日增量数据进行处理,则至少需要40个小时,而部署在eBay Ares Hadoop集群上的DBQL Parser日志分析系统将运行时间缩短至0.5个小时,极大的提高了项目的可行性和时效性。同时,该系统的数据分析结果反映了数据表之间的关系、查询的调度计划等信息,有效的帮助了数据仓库系统管理员了解数据表的使用情况,实现对系统存储空间的管理。