ETL简介和大众点评ETL平台搭建之初

1.1.1 ETL简介和发展概述

ETLExtract-Transform-Load的缩写,即数据抽取、转换、装载的过程[5]ETL作为商务智能的核心和灵魂,具有重要的意义。从目标上说,能够汇聚、筛选数据从而提高数据的价值。从功能上说,能够完成数据从数据源向目标数据仓库转化的过程,从而有效构建起数据仓库。ETL从多样的异构数据源中比如关系数据库、格式化和半格式化数据文件等抽取到原始数据层后进行清洗、转换、集成,最后加载到数据仓库(也可以是分类的数据集市)中,成为数据分析、数据挖掘的基础。下面对这三个部分分别解释[6]

1) 数据抽取:从各种互联网资源、业务系统、各种数据库及数据格式、各种应用中抽取数据。可以看出数据源是异构的,各种关系型和非关系型数据库、半格式化文本文件、CSV文件、XML文件等。这些数据被抽取出来后,暂存于内存中,等待后续处理。

2) 数据转换:在ETL之前,企业可能为数据仓库设计了一个满足业务需求的雪花模型,需要对加载的数据做转换、清洗等处理,这一步需要元数据的指导。

3) 数据装载:将经过前一个步骤处理后的数据装载到目的库中。

现在我们描述一个经典的ETL流程:首先根据数据源的类型,然后选择你预定转换去处理。每个转换处理完后,要么跳到你设定好的下一个转换,要么就是到了流程末尾,需要把数据存入目标表中。这个过程中如果发生了异常,就会走另外一个异常处理流程,输出错误日志到指定路径。到了指定时间,调度程序把任务运行起来完成你预设的数据工作。

我们感觉到我们必须把握整体的逻辑流程(如图1.1),也必须处理好每一个数据行变化的细节。具体来说前面的部分称为作业,后面的部分被称为转换。ETL解决方案中作业是一次数据处理过程,转换是数据处理过程的一步。因此多个转换按照数据业务流程逻辑连接在一起,构成一个作业。当然转换也可以被细分为子转换,具有一定的流程。ETL过程要么自己编写代码,要么利用可视化的工具可以借助流程图来生成代码。

 

图 1.1  ETL流程简述

自从计算机上的数据以各种形式保存以来,数据整合的要求就随之浮现。在大数据技术还没兴起之前,不同数据形式之间的整合主要通过手动编码或命令行的命令进行,这主要是脚本语言和Sql。我们把这叫做第一代的数据整合方案[7] 。到现在为止,手工编码方式仍然查菊一定地位,因为考虑的现实的复杂性,ETL工具也并非万能的。如果企业有专业的团队,除了抽取过程考虑到异构数据源等问题比较复杂最好使用工具外,数据的加载和清洗过程可以在线下用hqlsql语言进行,这种方式比较灵活、功能比较强大而且成本低,比较符合工业环境多变的需求。

第二代的ETL工具试着克服手工编码的开发周期较长、容易出错最主要是抽取障碍的问题,方法是自动生成代码,由ETL工具根据用户在图形用户界面设计的若干个流程来自动生成所需代码。在上世纪末,ETL代码生成解决方案出现了以PrismCarltonETI为代表的多种产品,但是其中很多都没有生存下来。只有一个例外,那就是ETI。当然代码生成技术并没有被第二代解决方案完全淘汰。例如Oracle的数据仓库产品依然占据一席之地,以及流行ETL工具Talend依然风生水起。

代码生成技术的最大优点就是自动化,有效降低了开发者的成本,当然也有缺点,他们适用的数据源类型有限。在第二代ETL解决方案还未全部攻占全球市场时,第三代ETl工具出现了。与第二代不同的是有了执行引擎,除了可以自动生成代码,最主要是可以执行用户自定义的数据处理过程。当然为了转换的顺利进行,还要存储数据源和目标以及转换规则的元数据。因为引擎的存在每一步的转换相互独立了起来。总而言之,引擎主要有连接数据库,执行sql和脚本,定时调度等自动化功能,大大标准化和自动化了ETL流程,从而显著提高生产效率。

1.1.2 本文课题背景

本文研究内容来源于本人所在企业ETL工具组的实践。该企业在2011年开始搭建自己的数据平台。在基本的Hadoop集群搭建起来后,数据中心有强烈的ETL需求,本人所在的数据工具组在参考了开源的ETL工具后,发现这些工具要么比较昂贵,要么开源但二次开发成本较高(与重新开发相差无几)。最后我们参考了阿里巴巴的数据平台架构,自己实现了传输工具Wormhole(参考Datax)、调度系统Kepler和开发前台Galaxy。这三个项目构成了该企业的ETL传输平台。

该企业平台团队分为数据工具组、数据分析组和数据应用组。本人加入数据工具团队ETL工具组时,产品已经进入成熟和升级期。主要工作已经是改进和升级。本文通过自己实习经验和对流行ETL解决方案的研究,探索一个典型的互联网企业ETL数据传输平台的设计和实现,对当今互联网企业的ETL工作有比较大的现实意义。

1.2 课题研究内容

本文研究的目的是通过对ETL原理、流行ETL解决方案的研究以及本人所在企业ETL传输平台开发组生产实践,探讨一种适合数据规模较大、有专业数据团队的大中型互联网企业的互联网企业的ETL数据传输平台的设计与实现。

本课题来源于实习时所参与的项目,主要着重于项目工程的实践。本文主要进行了以下内容的研究:

1) 现流行的ETL解决方案的探讨。这部分主要以当今市场颇为流行的IBM DataStagePentaho KettleTalend三种ETL解决方案作为典型进行研究。主要的研究内容包括:它们的基本信息,鲜明特点;它们对ETL过程的概念抽象;它们的开发流程设计特点;它们的架构以及运行机制;作业调度实现方式;集群搭建和拓展的方式;并发性能;易用性;稳定性等。

2) 该企业的ETL数据传输平台的需求、架构、设计与实现。需求分析部分主要是总结出符合互联网企业、尤其是该企业自身情况的功能和非功能需求,功能性需求分为调度系统、数据交换和开发前台三个模块。架构部分主要是给出平台和具体几个模块的架构设计。而设计与实现部分细分为三部分。第一部分详细分析了调度系统Kepler的设计与实现。调度框架是基于QuartzDoc-ker的,前者用来管理定时任务,后者是实例的具体运行形态。之所以设计实例在Docker容器中进行,是因为这样可以保证任务实例运行的隔离性和稳定性。第二部分是异构数据离线传输工具Wormhole设计和实现。Wormhole的整体架构为Framework+Plugin,插件(Plugin)包括读、写,分片和预处理类型。框架(Fra-mework)由ReaderWriter线程池和双端缓冲队列构成。是第三部分是开发前台的设计与实现。这部分是基于web实现的可视化界面,设计的模块包括任务的配置、管理和监控。另外,作业代码的发布上线、数据质量的配置、任务状态分析以及告警和数据质量系统等。

3) 对该企业数据传输平台在生产实践中的表现进行总结。与上文类似、本部分也是分为三部分进行阐述:第一部分介绍调度系统在生产实践中的使用情况和若干技术问题的解决;第二部分介绍Wormhole工具在生产实践中的数据、以及和未使用Wormhole之前的数据对比;第三部分则是Galaxy开发前台的生产数据,这部分详细描述了该企业ETL传输平台的状况。

你可能感兴趣的:(大数据,etl)