问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是ETL调度系统?

发布网友 发布时间:2022-04-20 06:01

我来回答

2个回答

热心网友 时间:2022-04-07 21:39

对于做过 BI 开发的朋友,ETL 并不陌生,只要涉及到数据源的数据抽取、数据的计算和处理过程的开发,都是 ETL,ETL 就这三个阶段,Extraction 抽取,Transformation 转换,Loading 加载。


从不同数据源抽取数据 EXTRACTION ,按照一定的数据处理规则对数据进行加工和格式转换 TRASFORMATION,最后处理完成的输出到目标数据表中也有可能是文件等等,这个就是 LOADING。

再通俗一点讲,ETL 的过程就跟大家日常做菜一样,需要到菜市场的各个摊位买好菜,把菜买回来要摘一下,洗一洗,切一切最后下锅把菜炒好端到饭桌上。菜市场的各个摊位就是数据源,做好的菜就是最终的输出结果,中间的所有过程像摘菜、洗菜、切菜、做菜就是转换。
在开发的时候,大部分时候会通过 ETL 工具去实现,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微软 SQL SERVER 里面的 SSIS 等等,在结合基本的 SQL 来实现整个 ETL 过程。


也有的是自己通过程序开发,然后控制一些数据处理脚本跑批,基本上就是程序加 SQL 实现。
哪种方式更好,也是需要看使用场景和开发人员对那种方式使用的更加得心应手。我看大部分软件程序开发人员出身的,碰到数据类项目会比较喜欢用程序控制跑批,这是程序思维的自然延续。纯 BI 开发人员大部分自然就选择成熟的 ETL 工具来开发,当然也有一上来就写程序脚本的,这类 BI 开发人员的师傅基本上是程序人员转过来的。


用程序的好处就是适配性强,可扩展性强,可以集成或拆解到到任何的程序处理过程中,有的时候使用程序开发效率更高。难就难在对维护人员有一定的技术要求,经验转移和可复制性不够。


用 ETL 工具的好处,第一是整个 ETL 的开发过程可视化了,特别是在数据处理流程的分层设计中可以很清晰的管理。第二是链接到不同数据源的时候,各种数据源、数据库的链接协议已经内置了,直接配置就可以,不需要再去写程序去实现。第三是各种转换控件基本上拖拉拽就可以使用,起到简化的代替一部分 SQL 的开发,不需要写代码去实现。第四是可以非常灵活的设计各种 ETL 调度规则,高度配置化,这个也不需要写代码实现。


所以在大多数通用的项目中,在项目上使用 ETL 标准组件开发会比较多一些。


ETL 从逻辑上一般可以分为两层,控制流和数据流,这也是很多 ETL 工具设计的理念,不同的 ETL 工具可能叫法不同。


控制流就是控制每一个数据流与数据流处理的先后流程,一个控制流可以包含多个数据流。比如在数据仓库开发过程中,第一层的处理是ODS层或者Staging 层的开发,第二层是DIMENSION维度层的开发,后面几层就是DW 事实层、DM数据集市层的开发。通过ETL的调度管理就可以让这几层串联起来形成一个完整的数据处理流程。


数据流就是具体的从源数据到目标数据表的数据转换过程,所以也有 ETL 工具把数据流叫做转换。在数据流的开发设计过程中主要就是三个环节,目标数据表的链接,这两个直接通过 ETL 控件配置就可以了。中间转换的环节,这个时候就可能有很多的选择了,调 SQL 语句、存储过程,或者还是使用 ETL 控件来实现。


有的项目上习惯使用 ETL 控件来实现数据流中的转换,也有的项目要求不使用标准的转换组件使用存储过程来调用。也有的是因为数据仓库本身这个数据库不支持存储过程就只能通过标准的SQL来实现。


我们通常讲的BI数据架构师其实指的就是ETL的架构设计,这是整个BI项目中非常核心的一层技术实现,数据处理、数据清洗和建模都是在ETL中去实现。一个好的ETL架构设计可以同时支撑上百个包就是控制流,每一个控制流下可能又有上百个数据流的处理过程。之前写过一篇技术文章,大家可以搜索下关键字 BIWORK ETL 应该在网上还能找到到这篇文章。这种框架设计不仅仅是ETL框架架构上的设计,还有很深的ETL项目管理和规范性控制器思想,包括后期的运维,基于BI的BI分析,ETL的性能调优都会在这些框架中得到体现。因为大的BI项目可能同时需要几十人来开发ETL,框架的顶层设计就很重要。

热心网友 时间:2022-04-07 22:57

.1 ETL流程及调度设计(ETL Schele)(PSP)
? ETL调度的目标
快速见效系统要抽取39家分行四个系统的数据进行加工处理,数据从下传文件到ODS库,ODS库到LDM,再计算PI值和汇总PI,整个ETL处理过程需按一定步骤和满足某些条件进行,某些关键的文件如汇率数据、机构表等都会影响整个ETL的处理,因此,快速见效的ETL处理流程将是一个比较复杂的过程。
考虑到将来ETL处理的多样性和复杂性,引入了Job的概念,将ETL处理过程分为一个一个的Job,Job可能是清洗\加载\转换,也可能是PI加工。为了对复杂的ETL处理过程更好的调度和监控,专门设计一个ETL调度系统。通过ETL调度系统的开发使用,将清晰、高效地通过Job调度的方式处理快速见效的ETL过程。

? ETL调度的功能范围

1. ETL调度功能图示

2. ETL调度功能说明

调度维护
1) 调度系统参数维护,对调度系统的公共参数:期数、进程数、数据日期、本期开始日期和本期结束日期进行设置和修改。
2) 下传文件信息维护,维护所有区域的下传文件名称、文件状态、文件数据日期和对应区域的归属关系。
3) 作业步定义与维护,定义作业对应的实际ETL处理过程,生成作业编号,定义作业类型和作业的驱动关系,作业的运行所需要的条件。
4) 调度异常处理,对调度过程中出现的异常情况进行处理,提供错误查找、出错重跑功能。

日志管理
1) 调度过程日志,管理记录调度中的主要过程和异常信息,如调度开始、调度完成、数据库操作异常和读写文件异常的日志。
2) Job执行日志,管理记录Job执行信息的日志,提供该日志的查询、删除和执行状态重置功能。
3) Job详细事件日志,管理记录Job执行中的详细事件(清洗记录条数、数据库具体操作情况)的日志,提供对日志的查询、删除操作。

作业调度
正常情况下的作业调度,对整个ETL过程进行调度,提供分段提交处理和自动提交处理功能。

可调度的Job类型
1) C程序(清洗),ETL调度提供与C程序的接口,从而可以对C程序进行调度。
2) 用C封装的SQLLDR(加载),将ORACLE SQLLDR封装在C程序中进行调度。
3) PROC程序(合并、转换),对合并和转换过程,调度提供相应的接口,从而对ORACLE的PROC程序进行调度。
4) 存储过程(转换),将存储过程封装在PROC程序中进行调度。
5) DataStage(PI加工),调度系统提供了与DataStage的接口,可以对DataStage各个种类的Job进行调度。

? ETL总体流程图

? 作业步(ETL_Step)的功能类型及数据处理
0. 文件FTP: 将各个分行的源业务系统(NLNS、SBS、NACS)的以预定的文件格式以FTP方式通过中行网络传输到QUICK WIN项目系统的ETL服务器。
1. 文件注册:0中FTP的源数据文件,经过解压缩后,必须在QUICK WIN项目系统中注册,只有经过文件注册过程后QUICK WIN项目系统才能确认“那些分行的源数据” 已经正确到达,ETL系统就可以相应的处理流程。
2. 数据清洗:从各分行FTP来的源数据文件,可能存在非法数据或冗余数据或者数据规则标准不统一,而且文件格式上也不能被QUICK WIN项目的ETL过程立即使用,因此必须对数据文件进行数据清洗(删除非法、冗余数据、统一数据规则标准、转换成QUICK WIN项目的ETL过程能“加载”处理的文件格式)。
3. 数据加载:将清洗后的数据(文件格式)通过SQL LOADER加载到ORACLE数据库相应的数据库表中。
4. ODS数据合并:将各个分行的相同类型的源业务系统数据合并到ORACLE数据库中同一张数据表中。
5. LDM数据加工:面向业务生产数据(ODS数据库表中的数据)根据“QUICK WIN分析模型”将数据转换、加工成面向分析主题的“分析型数据”。
6. PI加工:根据业务需求、业务规则和分析模型,从LDM数据表中加工出QUICK WIN所需的PI。
7. 报表加工:根据业务需求、业务规则和分析模型,从LDM数据表和PI表中中加工出QUICK WIN所需的报表。
8. ETL调度程序:调度ETL加工各个过程的运行。
9. 监控程序:监控ETL过程的运行状态(加工进度、加工效率、成功、警告、错误等)信息,及时向系统的运行维护人员报告系统运行状态。

? 作业步(ETL_Step)的流程和依存关系。
1) 清洗类型的Job的运行依赖于相应下传文件的状态,必须是在下传文件检查及登记后才能进行清洗Job的调度。
2) ODS层加载类型Job的运行依赖于相应的清洁文件是否由清洗程序生成,即相应的清洗Job是否正确运行完成。
3) 从ODS到LDM的数据转换依赖ODS层的相关数据是否齐备,即相应的加载Job是否正确运行完成。
4) PI加工的进行依赖LDM层数据,即相应的转换Job是否正确运行完成。
5) 根据数据依赖关系,分区域进行作业调度,各区域之间的ETL处理可以并行处理。

? 作业调度方式
1. ETL调度系统结构图

2. 调度策略
采取条件驱动的策略来进行Job的调度,Job一满足驱动条件便开始运行。针对快速见效系统的ETL情况,定义四种类型的驱动条件:
1) 前导Job驱动
ETL过程中各个操作需按一定次序进行,前导Job表示ETL过程中先要进行处理的Job,Job的前导Job可以有多个,前导Job驱动的图示如下:

2) 下传文件驱动
当下传文件未下传完毕时,下传文件清洗不能进行,因此,下传文件通常作为清洗文件的驱动条件,当系统检测到下传文件已下传并正确后,便可进行相应的清洗,驱动Job执行的下传文件可能有多个,图示如下:

3) 时间驱动
当到达某个时点时,Job便开始运行,图示:

4) 上述三种条件综合驱动
要上述三种情况至少两种均满足,Job才能运行。

3. Job的并发设计
每个Job只要满足了驱动关系后,便开始以后台方式运行。这样便实现了不同区域和同一区域的Job的最大限度的并行。考虑系统资源的情况,可以事先设定最大并行数。

4. 并发冲突设计
当并行跑的Job都需要共同使用同一资源的时候,会产生资源占用的冲突,ETL过程中通常的冲突, 用令牌的方式来避免冲突,只有获得令牌的JOB才能跑,否则等待令牌释放。

? 定义数据转换流程中检查点和核对点

1) 下传文件,下传文件与源系统数据进行比较检查,核对下传数据准确性。
2) 清洁文件,将清洁文件与下传文件进行比较检查,从而可判断清洗处理过程的正确性。
3) ODS库表,将ODS库表中的数据与下传文件中数据进行比较检查,从而可判断加载处理过程的正确性。
4) LDM库表,将LDM库表中的数据与ODS库表中数据进行比较检查,从而可判断转换处理过程的正确性。
5) PI值,将PI值与LDM层相关的库表进行比较检查,从而可判断PI计算处理过程的正确性。

? 日志信息设计
1) 调度过程日志。以文件的方式存在,用于记录Job调度中的主要过程和异常信息,如调度开始、调度完成、数据库操作异常和读写文件异常。
2) Job执行日志。数据库表方式存在,给Job的调度提供必要的信息,是Job调度策略计算的依据,调度模块和Job之间的接口之一。
3) Job详细事件日志。数据库表方式存在,记录ETL处理过程中的详细信息,如清洗记录成功条数、失败条数或数据库操作情况(INSERT\UPDATE\DELETE)。

? 给出异常处理设计:所有被拒绝的行、可接受的错误数以及合理退出的方式

? 通知设计:重要信息(成功/失败)的通知
1. 成功退出
1) 分段提交方式,当分段提交的当次任务都正确完成,即Job运行状态临时表中登记的作业状态全部为完成时,退出ETL调度。
2) 自动提交方式,当当期所有的任务都正确完成,即Job运行状态表中登记的作业状态全部为完成时,退出ETL调度。

2. 失败退出
1) 关键作业异常,关键作业运行异常时,影响剩下的作业不能运行时,则退出ETL调度。
2) 超过ETL时限,当超过预先设定的ETL 时限时,退出ETL调度。
3) 数据库异常,当不能正常操作数据库时,退出ETL调度。
4) 操作系统异常,当发生操作系统异常,导致程序不能正常运行,如文件系统异常导致读写文件错时,需要退出ETL调度。
5) 手工退出,需要人为干预ETL调度的时候,能以手工操作的方式退出ETL调度。

? 给出各个阶段号说明 给出表格:表6-N ETL_Step编号表(ETL控制参数)

? ETL 调度优先级别
按Job驱动关系进行Job的调度,前导Job优先于后续Job。

? ETl流程及调度模块说明
? 模块概要说明
模块概要说明(总体层次)
模块名称 模块编号 开发工具/环境 模块功能说明 备注
作业调度 J01 AIX+Shell+C ETL调度主模块,负责整个ETL过程的调度处理。 维护员
作业管理 J02 EXECL+BRIO+C 定义作业步对应的实际ETL处理过程,生成作业编号,定义作业类型和作业的驱动条件。 管理员
异常重跑 J03 AIX+Shell+C 当ETL运行出现异常时,提供断点重跑机制。 维护员
参数管理 J04 Brio EIS 调度系统的公共参数:期数、进程数、数据日期、本期开始日期和本期结束日期进行设置和修改。 管理员
日志管理 J05 BrioSDK,EIS 包括调度过程日志、Job执行日志和Job详细事件日志的查询和删除。 管理员

模块概要说明(明细层次)
模块名称 模块编号 模块类型 开发环境 模块功能说明 备注
CTLINIT J01_01 作业调度 AIX,PROC 检查输入参数和驱动关系,初始化资源令牌状态/Job运行状态/下传文件状态。
UNCOMPR J01_02 作业调度 AIX,PROC,SHELL 检测下传目录下的压缩/打包的文件,并将这些文件解压缩/展开,之后移动到非下传目录下。
FILEREG J01_03 作业调度 AIX,PROC 根据下传文件控制表 检查各文件头的控制信息,将检查结果记录在下传文件控制表中。
CHKREGJOB J01_04 作业调度 AIX,PROC 扫描Job运行状态(或临时)表看所有(或本次提交需要完成的)Job是否完成,根据Job执行日志信息登记完成的Job(在Job运行状态表登记)。
CALREGJOB J01_05 作业调度 AIX,PROC 根据Job运行状态/下传文件状态/ Job驱动关系计算可已运行的Job,并在Job运行状态表中将这些Job登记为“就绪“状态。
JOBRUN J01_06 作业调度 AIX,PROC,SHELL 依据当前进程数/资源令牌占用清况发出调度一个Job运行的命令,并登记Job运行状态为“正运行“。
CRTJOB J02_01 作业管理 EXECL 生成作业列表和作业对应的驱动条件。
CHKJOB J02_02 作业管理 PROC 检查作业列表的合法性,包括驱动关系的合理性检查。
RERUN J03_01 异常重跑 AIX,PROC,SHELL 当ETL运行出现异常时,提供断点重跑机制。
PARADM J04_01 参数管理 BRIO EIS,SQLPLUS,SHELL 调度系统的公共参数:期数、进程数、数据日期、本期开始日期和本期结束日期进行设置、修改及查询。
LOGADM J05_01 日志管理 BRIO EIS,SQLPLUS 包括调度过程日志、Job执行日志和Job详细事件日志的查询和删除。

? ETL流程及调度的模块设计说明表(设计阶段)
见附件《ETL调度详细设计.doc》
? 给出ETL流程及调度的程序设计说明表(实现阶段):参见 “1.15节”

1.2 ETL监控(ETL Monitor) (PSP)
? ETL监控结构设计,图示说明

? ETL监控主要功能概述
1) ETL调度检测下传文件状态,并登记到下传文件状态表中,通过Hyperion Client设计对下传文件状态查询的BQY文档,发布到Hyperion Performance Suite 8 Server,再通过Http或直接通过ODBC进行BQY查询来获取下传文件状态,从而实现了文件传输监控功能。
2) 当某个区域的某些文件清洗完成时,ETL调度在Job运行状态表中登记该区域相应清洗Job的状态(异常或完成);当文件加载、转换或加工完成时,ETL调度同样方式在Job运行状态表中登记相应Job的状态,通过设计对Job运行状态查询的BQY,并发布到Hyperion Performance Suite 8 Server,再通过Http或直接通过ODBC进行BQY查询来获取Job的当前状态,从而实现了加载、转换和加工的监控功能。
3) 对Job的执行情况(开始时间、结束时间)的监控通过设计查询Job执行日志表的BQY文档来实现,对Job的详细事件的监控通过设计查询Job详细事件日志表的BQY来实现。
4) 对调度的整体情况的监控,则可直接通过TELNET查看调度过程日志,便能知道调度的完成情况和异常情况(数据库错、参数非法或操作系统错等)。

? ETL监控模块说明:
? ETL监控的模块概要说明
模块概要说明(明细层次)
模块名称 模块编号 模块类型 开发环境 模块功能说明 备注
FILEMON J06_01 ETL监控 BRIO,EIS 监控各个区域的下传文件传输情况和文件状态。
JOBMON J06_02 ETL监控 BRIO,EIS 对各个区域的清洗、加载、转换和加工过程的完成情况进行监控。
EVTMON J06_03 ETL监控 BRIO,EIS 对JOB的执行开始时间、结束时间和JOB运行过程中的详细操作情况进行实时监控。
MAINMON J06_04 ETL监控 BRIO,EIS 对调度的整体情况的监控,包括调度成功完成、异常退出、数据库错、参数情况和操作系统出错进行监控。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 谁能帮我介绍下港口调度系统,又具体会有哪些应用呢? 建筑工程项目调度主要做什么工作? 调度系统的系统特点 电力调度自动化系统 如何发挥管理职能在生产调度系统中的作用 什么是电力调度系统 电力系统调度的主要任务有哪些? 公交智能调度系统具体是做什么的?? 针对煤矿的调度系统主要需要实现哪些功能? 铁路调度系统按功能划分可分为几部分?各个部分可... 什么是系统调度 1.电力系统调度中心的主要作用和功能是什么? 城市应急指挥调度系统都有哪些功能和特点? 行车策划调度系统的作用是什么?其计划编制协同平台... 电力系统调度中心的主要作用和功能是什么? 应急指挥调度系统的作用? 物流智能调度系统的作用? 华为par-al00什么型号 如何学英语? 英语英语。。 GPS监控调度系统的功能方案 大气层从内到外分为哪三层? 地球上的大气层分为哪几种? 地球大气按什么划分,分为哪些层 地球上的大气层分布? 1、地球大气分哪几层? 大气层分为几层,大气污染发生在哪个层? 192.168.1.100登录怎么?设置密码 在吗 大神 紧急求助 学校网络中心申请到了一段ip地... 网络段192.168.100.x要划分9个子网,求子网掩码、... 计算机的IP地址是192.168.10.200,子网掩码是255.2... IP地址:192.168.100.138,子网掩码为255.255.255.... 192.168.1.100登录 C类IP划分给6个部门,子网IP怎么分配? 当IP地址为192.168.100.100、子网掩码为255.255.25... 网络段192.168.100.0,要划分8个子网,求子网掩码... C类地址子网划分 某单位有100台主机 4个不同部门 每部门不超过30台 ... 192.168.100.0/24划分6个子网 每个子网能容纳的主... 某单位的网络管理员把网络划分为6个IP子网,采用的...