1、基于基于DRS实现的实现的ETL处理过程处理过程案例分析案例分析Leavay Software利而不害,为而不争ETL主流实现方式主流实现方式自主脚本实现工具软件实现现有的ETL工具软件有:DataStage,Informatica等。提供了一种组件化的ETL处理实现方式,将ETL处理的各个环节抽象成组件。如数据源组件,Transformer组件,Sort组件,Merge组件,Join组件等一系列组件。组件之间按照一定的关系进行ETL处理。ETL处理的开发、维护、管理有一套规范化的软件进行支撑。技术人员自主开发整个ETL处理流程的程序:比如用C、Java、TCL、Shell、存储过程等开发一系
2、列脚本实现数据抽取、数据清洗、转换过程。按照关系调度脚本,以实现ETL处理过程。脚本的开发、维护、管理全部由人工进行控制。利而不害,为而不争存在问题存在问题 预先ETL处理过程中的各种操作定义成组件,灵活性较差,在遇到组件不能满足ETL处理需求时,很难快速调整组件以实现需求; 图形化的组件虽然降低了软件的使用难度,但是在系统发生故障时,难以定位和处理; 基于工具的实现在处理性能上较差,难以调优。 程序代码只能体现其技术实现内容,很难做到代码的自描述,规范化程度低,对于维护工作来讲有较高的难度; 元数据需要手工维护,技术实现与描述文档经常会出现不一致。工具软件实现自主脚本实现利而不害,为而不争问
3、题分析问题分析自主脚本实现团队服务规范性不足透明度不足质量受编程人员水平影响大工具式实现灵活性不足不能快速解决复杂的业务问题在复杂的业务场景下性能无法保证采用将ETL过程各个步骤封装成数据对象的方法。数据对象可随时进行调整和优化,同时通过数据对象可规范ETL处理过程,实现ETL处理过程的自我描述,提升系统的运行质量、维护效率的同时让系统变得可管可控、可持续扩展。利而不害,为而不争基于基于DRS的的ETL处理过程实现处理过程实现数据对象的功能包括:业务数据对象设计、技术数据对象开发和数据对象流调度。业务数据对象设计技术数据对象开发数据对象流调度元模型设计元数据填充元数据血缘分析图数据质量规则设计
4、数据质量规则制定数据质量监控、告警、处理ETL处理逻辑框架设计ETL处理业务逻辑实现ETL处理调度数据质量: 质量规则预先设定,落实到系统的具体处理过程; 灵活的数据质量规则设置,具有独立性,不影响已有数据的运行; 中断式告警模式,规则出错可中断数据流,防止错误数据扩散。元数据: 业务元数据,增强业务人员、技术人员对后台实现的理解; 技术元数据,落实到具体的数据处理过程,实现机读与人读的一致性; 业务、技术元数据统一管理,更好地保障两者的一致性。 数据处理: 用户自定义的、统一的处理框架,可灵活添加技术规范或管理规范; 基于ETL处理框架的开发模式,开发只需要按模板填充业务相关的信息,技术细节
5、由DRS统一保障; 更容易定位问题、解决问题、消除问题所造成的影响,实现ETL处理重跑最小代价。利而不害,为而不争实现过程实现过程 ETL处理框架设计处理框架设计ETL处理分五大模块:数据抽取、数据清洗、数据加载、库内转换、规则检查。各模块可灵活进行组合,形成ETL处理流程。l 关系型数据库关系型数据库(Oracle、DB2、TD 、MySQL等)等)l Hadoopl 结构化文件结构化文件l 非结化文件(可扩非结化文件(可扩展)展)l 其他(可扩展)其他(可扩展)抽取抽取清洗清洗加载加载转换转换l 预先定义清洗函数预先定义清洗函数l 文件处理文件处理l 关系型数据库关系型数据库(Oracle
6、、DB2、TD 、MySQL等)等)l Hadoopl 单表处理单表处理l 多表关联多表关联l 其他其他规则规则l 内置各类数据质量内置各类数据质量检查规则检查规则l 实时告警实时告警l 中断式告警中断式告警可复写、可扩展的标准处理脚本,针对不同ETL过程,可自主编程实现利而不害,为而不争实现过程实现过程 ETL处理框架设计处理框架设计ETL处理各个功能模块的设计分为属性和方法两部分:- 元数据作为属性,是进行具体ETL处理需要填充的信息;- 处理逻辑和质量校验功能作为方法,由系统建设初期定义和实现,并可灵活修改。属性属性方法方法u方法调用属性在调度中运行,使得元数据既可用来描述系统,同时也是
7、系统运行的一部分;u可扩展的属性和方法,使得系统可应对各种复杂的场景,且实现方便快捷。抽取模块设计利而不害,为而不争实现过程实现过程 ETL处理框架设计处理框架设计将ETL处理的六类业务数据对象设计落实到系统中:抽取模型清洗模型加载模型转换模型规则模型利而不害,为而不争实现过程实现过程 ETL处理框架设计处理框架设计ETL处理业务数据对象设计后,自动转换成技术数据对象。技术数据对象实现分为两部分:属性填充和方法实现。方法实现:由技术实力较强的开发人员进行设计,尽可能固化每类模型共性的代码,一次开发,多次复用。遇到复杂场景,可灵活进行修改。属性填充:由开发人员填写,主要是ETL处理参数,相关元数
8、据、数据质量规则填写。属性填充属性填充方法实现方法实现系统初期一次完成,多次复用利而不害,为而不争实现过程实现过程 ETL开发开发按模板填充相应信息,系统自动生成ETL过程。填充式的开发模式:在最大限度上保证了最终开发的质量不受限于基层开发人员的态度和能力,同时降低开发的人力成本。利而不害,为而不争实现过程实现过程 ETL开发开发抽取模型抽取模型合并模型合并模型加加载载模型模型按系统预先设定(可随时修改),自动生成的ETL模型信息:规则规则模型模型利而不害,为而不争实现过程实现过程 ETL开发开发系统自动生成的ETL数据流:利而不害,为而不争实现过程实现过程 ETL运行运行可视化的ETL过程,
9、随时掌握系统运行动态:利而不害,为而不争实现过程实现过程 ETL运行运行ETL处理在运行过程的各个环节都可设置不同的并发数和优化级。- 并发数的设置,最大程度地利用系统资源,减少ETL过程不必要的等待时间。 并发数控制 队列管理利而不害,为而不争实现过程实现过程 ETL运行运行- 优化级的设置,可在资源紧张情况下,优先保障重点数据的处理。利而不害,为而不争ETL 处理采用分布式架构,只需增加处理器或节点,就可以升级系统并行处理能力。DRS ETL服务器DRS ETL 代理集群实现过程实现过程 ETL运行运行利而不害,为而不争实现过程实现过程 数据质量监控数据质量监控内置各类数据质量检查规则,并
10、具备可扩展性业务规则p 值域监控:通过对目标值与阈值上下限比较来进行检查;p 波动监控:通过对目标值不同周期之间的增减幅度与阈值范围上下限的比较来进行检查;p 平衡监控:通过对若干个目标值的简单四则运算(加、减、乘、除),来检验各个指标间潜在的平衡或其他比较关系。p 技术规则p 记录数一致性检查p 数据类型及格式检查p 非规范编码检查p 数据质量规则库数据质量规则维护和开发数据质量规则库(业务/技术规则)利而不害,为而不争实现过程实现过程 数据质量监控数据质量监控 灵活的数据质量规则设置,具有独立性,不影响已有数据的运行 ETL过程任意节点 ETL过程任意节点之间单个节点规则检查两个节点之间规
11、则检查利而不害,为而不争实现过程实现过程 数据质量监控数据质量监控采用数据对象流(与元数据血缘图一致)的调度方式,中断式告警设置,可提前发现数据质量问题,快速定位错误数据,追溯分析错误原因。 Add your title in here Add your title in here数据对象流调度数据对象流调度问题定位问题定位故障恢复故障恢复查看可视化的与元数据血缘分析图一致的查看可视化的与元数据血缘分析图一致的数据对象流调度运行监控视图。数据对象流调度运行监控视图。故障恢复只需依照数据对象流分析重跑错误节故障恢复只需依照数据对象流分析重跑错误节点及其影响到的节点,让数据重跑的代价降到点及其影响
12、到的节点,让数据重跑的代价降到最低。最低。调度过程,出错节点影响到的节点将停止运调度过程,出错节点影响到的节点将停止运行,避免质量问题被扩大,可以提前发现、行,避免质量问题被扩大,可以提前发现、快速定位问题;同时查看到详细的出错提示快速定位问题;同时查看到详细的出错提示和溯源分析,可以快速处理问题和溯源分析,可以快速处理问题数据对象流最小重跑代价利而不害,为而不争ETL处理的信息和知识都沉淀在系统中,从而: 给业务人员、管理人员、技术人员提供共同沟通的平台 为各角色提供个性化界面去了解和掌握系统 对外提供实时的业务信息和数据动态 转化为知识库,降低系统的学习成本通过模型积累业务和技术元数据与生
13、产环境完全一致的数据字典和数据流实现过程实现过程 知识沉淀知识沉淀利而不害,为而不争实时更新的系统信息,定制化的专业视角,用户可随时了解系统ETL的详细信息,包括接口数量、数据来源、处理步骤、数据流向。实现过程实现过程 知识沉淀知识沉淀利而不害,为而不争效果比对效果比对BeforeAfter运行时长日接口:凌晨0:30-4:00月接口:1-6号运行,每晚10点左右完成日接口:凌晨0:30-3:00,效率提升30%月接口:1-6号运行,每天下午2点前完成,每天减少8小时业务支撑人员体验新需求开始时,参与确认数据源表后期无法跟进和检查实现是否与需求一致管控能力差:技术实现无文档新需求开始时,参与确
14、认数据源表后期可以持续跟踪,根据各种视图检查实现是否与需求一致管控能力强:能看到系统中所有模型和数据流信息,能实时掌握系统运行的相关信息数据质量出错概率高,错误原因多样化人工干预多出错概率低,主要集中在规则通不过人工干预少错误定位和修复对维护人员要求高,新人学习成本高问题的发现和解决较难固化对维护人员要求低,新人学习成本低主要出错在检查规则,设定阈值可提前发现和预警日常维护日接口偶尔报错,月接口经常报错处理起来比较复杂且耗时多日接口几乎不报错,月接口错误主要来自外部数据源,处理起来简单且耗时少需求上线没有统一管理,多人同时上线时风险较高上线基本不出错,风险小需求下线直接修改程序,删除要下线的接口但下线部分的影响范围无法确定,会囤积很多无用的资源不敢释放根据数据流图血缘和影响分析来判断可下线的模型确保做到安全、干净可扩展性Shell程序,无可扩展性和二次开发可言不同的模型应对不同的应用需求丰富的可供二次开发使用的API还可以利用存储在系统中的模型和数据流信息开发出各种自定义视图和功能知识积累和复用无文档描述系统,无法获取系统实时信息,需要依靠人确认信息基于系统积累模型、数据流,实现管理视图与生产系统的信息一致,知识共享谢 谢!