数据仓库与数据挖掘
目录:
第一部分:ETL Automation简介
第二部分:ETL Automation架构
第三部分:ETL Automation环境变量说明
第四部分:ETL Automation目录结构说明
第五部分:ETL Automation服务说明
第六部分:ETL Automation知识库说明
第七部分:ETL Automation GUI工具
第八部分:ETL任务调度
第九部分:常见问题讨论
/**********************************/
第一部分:ETL Automation简介
1、Teradata公司开发的ETL流程调度产品(product);
2、使用Perl程序开发,运行环境需要安装Perl软件及DBI、DBD插件;
3、C/S服务器架构
4、ETL Automaiton由以下几部分组成:
(1)、ETL Automation服务
(2)、ETL Automation目录架构
(3)、ETL Automation知识库
(4)、ETL Automation环境变量
(5)、ETL Administrator / ETL monitor管理工具(GUI)
第二部分:ETL Automation架构
第三部分:ETL Automation环境变量说明
变量名称 | 说明 | 举例说明 |
AUTO_DB | ETL知识库名称,默认为ETL | AUTO_DB=PETL |
AUTO_DSN | ETL Automation连接数据库的ODBC DSN | AUTO_DSN=ETLDB |
AUTO_HOME | ETL主目录路径 | AUTO_HOME=D:\DWETL |
AUTO_JOB_COUNT | ETL流程调用任务的最大并行数 | AUTO_JOB_COUNT=10 |
AUTO_PERL | Perl的安装路径 | AUTO_PERL=C:\PERL |
AUTO_PRIMARY_SERVER | ETL Automation的主服务器标识:1-主Server 0-Client | AUTO_PRIMARY_SERVER=1 |
AUTO_SERVER | ETL服务器名称标识 | AUTO_SERVER=DWLOAD |
AUTO_SERVER_IP | ETL服务器的IP地址 | AUTO_SERVER_IP=192.168.6.76 |
AUTO_SLEEP | ETL服务轮询的时间间隔 | AUTO_SLEEP=60 |
第四部分:ETL Automation目录结构说明
/ETL (Automation 主目录)
|---/APP 存放ETL任务脚本。在此目录下先建子系统目录,然后建ETL任务目录
|---/DATA
|------/complete 存放已成功执行过的数据. 以系统名称以及日期来建立子目录
|------/fail
|---------/bypass 存放不须执行的档案.以系统名称以及日期来建立子目录
|---------/corrupt 存放大小不符合的档案. 以系统名称以及日期来建立子目录
|---------/duplicate 存放重复接收的档案. 以系统名称以及日期来建立子目录
|---------/error 存放执行作业过程中产生错误的档案. 以系统名称以及日期来建立子目录
|---------/unknown 存放未定义在 ETL Automation 机制中的档案. 以日期来建立子目录
|------/message 存放要发送讯息通知的控制文件
|------/process 存放正在执行中的作业所使用的数据文件及控制档
|------/queue 存放准备要执行的作业所使用的数据文件及控制档
|------/receive 用来接收各来源系统所传送来的数据文件及控制文件
|---/LOG 存放 ETL Automation 系统程序及各作业在执行时所产生的记录档案
|---/bin 存放 ETL Automation 系统程序的执行文件
|---/etc 存放 ETL Automation 机制的一些设定档案
|---/lock 存放 ETL Automation 系统程序及各作业在执行时所产生的 lock 档案
|---/tmp 临时缓冲目录,存放临时文件
第五部分:ETL Automation服务说明
服务名称 | 说明 |
etlagent.exe | 负责执行远程操作的动作。另外该服务对应的日志文件能够提供一定的审 计功能。 |
etlclean.exe | 负责执行数据清除 (House Keeping) 的动作 |
etlmaster.exe | 负责处理由 etlrcv.pl 所交付的档案。etlmaster.exe 会找出档案所对应的作业 并在作业的执行条件满足时呼叫 etlslave_nt.pl 或 etlslave_unix.pl 来执行作业 |
etlmsg.exe | 负责发送讯息通知 (Message Notification) 的动作,可选方式为短信或EMAIL |
etlrcv.exe | 负责处理从各来源系统所传送来的档案. 当档案通过检查后, 会将档案交由 etlmaster.exe来处理 |
etlwdog.exe | 在主要服务器(Primary erver) 上是负责接收各次 要服务器 (Secondary Server)所传送来的存活封包(Heartbeat Packet) 以判断各服务的状态并 更新 记录。而在发现有次要服务器未能在一段时间内送来存活封包的话, 则会认 定此次要服务器 为停止状态, 而会将当时正在此部次要服务器上执行的作 业的状态设成失败(Failed)。 而在次要服务器(Secondary Server)上则是定时 发送存活封包(Heartbeat Packet) 至主要服务器 (Primary Server)上以通知目前 次要服务器的状态 |
etlschedule.exe | 负责提交定时任务作业的动作 |
1、etlrcv
2、etlmas
3、etlschedule
第六部分:ETL Automation知识库说明
知识库是ETL Automation最重要的组件之一。
包括但不限于以下信息存储在ETL知识库中:ETL服务器标识、 ETL任务的定义、任务之间的关系、任务运行状态历史、ETL记录日志、ETL文件接收日志及ETL事件日志等。
ETL知识库中比较重要的表如下:
1、ETL服务器配置表:ETL_Server
2、ETL子系统表:ETL_Sys
3、任务定义表:ETL_Job、ETL_Job_Source、ETL_Job_TimeWindow;
4、任务关系表:ETL_Job_Dependency、ETL_Job_Stream、ETL_RelatedJob
5、任务运行状态历史表:ETL_Job_Status
6、ETL记录日志表:ETL_Record_Log
7、ETL文件接收表:ETL_Received_File
8、ETL事件表:ETL_Event
第七部分:ETL Automation GUI工具
ETL Automation GUI工具包括ETL Administrator和ETL Monitor。
ETLAdmin用来定义并管理在 ETL Automation 中的作业及作业关连性。ETLMonitor用来监看ETL服务器的状态、作业的执行状态及其它异常情况。
由于GUI工具使用Java语句编写,因此在运行工具之前,必须安装Java的运行环境(Runtime Environment ),需要安装的Java运行环境版本为1.3.1及以上。
你可以至 Sun 的网站去下载最新的 Java 执行环境版本。
第八部分:ETL任务调度
ETL Automation通过控制文件对ETL任务自动调度
文件命名规则
作业的脚本文件与控制文件的命名必须与ETL Automation资料库表中的相关定义一致。其对应关系如下表所示:
文件或目录 | 资料库中的对应表和字段 |
作业目录名 | ETL_Job.Etl_Job |
作业脚本名 | ETL_Job.Etl_Job |
receive目录下的控制文件名 | ETL_Job_Source.Source |
queue目录下的控制文件名 | ETL_Job_Source. Conv_File_Head |
process目录下的控制文件名 | ETL_Job_Source. Conv_File_Head |
第九部分:常见问题讨论
1、通过Automation调度作业时,作业为何无法启动?
ETL Automation的系统程序,以及所有作业脚本在正常执行时,都会在目录$HOME/etl/lock下生成一个.lock文件,因此当重复启动一个系统程序或作业脚本时,都会首先检查到lock目录下已经有相应的.lock文件,这就避免了程序或作业的重复调用。
也可以通过ETL Monitor工具观察到这一错误。
解决方法:将目录$HOME/etl/lock下的对应文件清除。
2、Automation的作业调度性能为何会下降?
当Automation的receive、queue、process等目录下积压的控制文件过多时,或者资料库表ETL_Job_Queue中存储的记录过多时,etlrcv、etlmas以及etlschedule等进程的执行效率会降低,从而使得Automation对作业的调度能力显著下降。
例如在EMS项目组,曾出现过作业由pending状态转为running状态耗时45分钟的情况。
解决方法:加强对Automation目录结构的维护,对运行失败的作业及时进行处理,避免由于作业失败而导致上述目录中的控制文件产生积压。同时要尽量减少资料库表ETL_Job_Queue中的记录数。
3、有数据文件的作业加载失败后,为何无法重新启动?
当作业带有需要处理的数据文件时,在读取数据文件之前,Automation会首先将该数据文件的信息存入到资料库表ETL_Received_File中。
由于数据文件格式错误导致作业失败后,Automation会自动将数据文件移入error目录。之后,当数据文件的格式修改无误,并将数据文件和控制文件重新移入receive目录后,作业仍然无法执行。
解决方法:将资料库表ETL_Received_File中的对应记录删除。
4、定时触发的作业突然开始执行,且执行完后还会再次反复执行。
这是由于从库表ETL_TimeTrigger中直接删除了该作业的定时触发记录,而没有同步更新ETL_Job表中TimeTrigger字段的值。
Etlschedule进程首先检查ETL_Job表,认为当前作业是时间触发的。随后检查ETL_TimeTrigger表时,无法找到该作业的触发时间,此时默认其为0,而当前时间通常大于等于0,因此系统认为触发条件满足,该作业被不断触发。
解决方法:更新ETL_JOB表,同时将ETL_Job_Queue中已插入的对应记录删除。并且今后尽量通过GUI工具操作,避免直接对资料库表进行update。