ETL AUTOMATION介绍
/**********************************/
目錄:
第一部分:ETL Automation簡介
第二部分:ETL Automation架構(gòu)
第三部分:ETL Automation環(huán)境變量說明
第四部分:ETL Automation目錄結(jié)構(gòu)說明
第五部分:ETL Automation服務(wù)說明
第六部分:ETL Automation知識庫說明
第七部分:ETL Automation GUI工具
第八部分:ETL任務(wù)調(diào)度
第九部分:常見問題討論
/**********************************/?
第一部分:ETL Automation簡介
? ? 1、Teradata公司開發(fā)的ETL流程調(diào)度產(chǎn)品(product);
? ? 2、使用Perl程序開發(fā),運(yùn)行環(huán)境需要安裝Perl軟件及DBI、DBD插件;
? ? 3、C/S服務(wù)器架構(gòu)
? ? 4、ETL Automaiton由以下幾部分組成:
? ? ? ? (1)、ETL Automation服務(wù)
? ? ? ? (2)、ETL Automation目錄架構(gòu)
? ? ? ? (3)、ETL Automation知識庫
? ? ? ? (4)、ETL Automation環(huán)境變量
? ? ? ? (5)、ETL Administrator / ETL monitor管理工具(GUI)
第二部分:ETL Automation架構(gòu) ??
第三部分:ETL Automation環(huán)境變量說明
變量名稱 | 說明 | 舉例說明 |
AUTO_DB | ETL知識庫名稱,默認(rèn)為ETL | AUTO_DB=PETL |
AUTO_DSN | ETL Automation連接數(shù)據(jù)庫的ODBC DSN | AUTO_DSN=ETLDB |
AUTO_HOME | ETL主目錄路徑 | AUTO_HOME=D:\DWETL |
AUTO_JOB_COUNT | ETL流程調(diào)用任務(wù)的最大并行數(shù) | AUTO_JOB_COUNT=10 |
AUTO_PERL | Perl的安裝路徑 | AUTO_PERL=C:\PERL |
AUTO_PRIMARY_SERVER | ETL Automation的主服務(wù)器標(biāo)識:1-主Server 0-Client | AUTO_PRIMARY_SERVER=1 |
AUTO_SERVER | ETL服務(wù)器名稱標(biāo)識 | AUTO_SERVER=DWLOAD |
AUTO_SERVER_IP | ETL服務(wù)器的IP地址 | AUTO_SERVER_IP=192.168.6.76 |
AUTO_SLEEP | ETL服務(wù)輪詢的時(shí)間間隔 | AUTO_SLEEP=60 |
第四部分:ETL Automation目錄結(jié)構(gòu)說明
? ? /ETL (Automation 主目錄)
? ? |---/APP ? 存放ETL任務(wù)腳本。在此目錄下先建子系統(tǒng)目錄,然后建ETL任務(wù)目錄
? ? |---/DATA?
? ? |------/complete 存放已成功執(zhí)行過的數(shù)據(jù). 以系統(tǒng)名稱以及日期來建立子目錄
? ? |------/fail?
? ? |---------/bypass 存放不須執(zhí)行的檔案.以系統(tǒng)名稱以及日期來建立子目錄?
? ? |---------/corrupt 存放大小不符合的檔案. 以系統(tǒng)名稱以及日期來建立子目錄
? ? |---------/duplicate 存放重復(fù)接收的檔案. 以系統(tǒng)名稱以及日期來建立子目錄
? ? |---------/error 存放執(zhí)行作業(yè)過程中產(chǎn)生錯(cuò)誤的檔案. 以系統(tǒng)名稱以及日期來建立子目錄?
? ? |---------/unknown 存放未定義在 ETL Automation 機(jī)制中的檔案. 以日期來建立子目錄?
? ? |------/message 存放要發(fā)送訊息通知的控制文件?
? ? |------/process 存放正在執(zhí)行中的作業(yè)所使用的數(shù)據(jù)文件及控制檔?
? ? |------/queue 存放準(zhǔn)備要執(zhí)行的作業(yè)所使用的數(shù)據(jù)文件及控制檔?
? ? |------/receive 用來接收各來源系統(tǒng)所傳送來的數(shù)據(jù)文件及控制文件?
? ? |---/LOG 存放 ETL Automation 系統(tǒng)程序及各作業(yè)在執(zhí)行時(shí)所產(chǎn)生的記錄檔案?
? ? |---/bin 存放 ETL Automation 系統(tǒng)程序的執(zhí)行文件?
? ? |---/etc 存放 ETL Automation 機(jī)制的一些設(shè)定檔案?
? ? |---/lock 存放 ETL Automation 系統(tǒng)程序及各作業(yè)在執(zhí)行時(shí)所產(chǎn)生的 lock 檔案?
? ? |---/tmp 臨時(shí)緩沖目錄,存放臨時(shí)文件
第五部分:ETL Automation服務(wù)說明
服務(wù)名稱 | 說明 |
etlagent.exe | 負(fù)責(zé)執(zhí)行遠(yuǎn)程操作的動作。另外該服務(wù)對應(yīng)的日志文件能夠提供一定的審 計(jì)功能。 |
etlclean.exe | 負(fù)責(zé)執(zhí)行數(shù)據(jù)清除?(House Keeping)?的動作 |
etlmaster.exe | 負(fù)責(zé)處理由?etlrcv.pl?所交付的檔案。etlmaster.exe?會找出檔案所對應(yīng)的作業(yè) 并在作業(yè)的執(zhí)行條件滿足時(shí)呼叫?etlslave_nt.pl?或?etlslave_unix.pl?來執(zhí)行作業(yè) |
etlmsg.exe | 負(fù)責(zé)發(fā)送訊息通知?(Message Notification)?的動作,可選方式為短信或EMAIL |
etlrcv.exe | 負(fù)責(zé)處理從各來源系統(tǒng)所傳送來的檔案.?當(dāng)檔案通過檢查后,?會將檔案交由 etlmaster.exe來處理 |
etlwdog.exe | 在主要服務(wù)器(Primary erver)?上是負(fù)責(zé)接收各次 要服務(wù)器?(Secondary Server)所傳送來的存活封包(Heartbeat Packet)?以判斷各服務(wù)的狀態(tài)并 更新 記錄。而在發(fā)現(xiàn)有次要服務(wù)器未能在一段時(shí)間內(nèi)送來存活封包的話,?則會認(rèn) 定此次要服務(wù)器 為停止?fàn)顟B(tài),?而會將當(dāng)時(shí)正在此部次要服務(wù)器上執(zhí)行的作 業(yè)的狀態(tài)設(shè)成失敗(Failed)。? 而在次要服務(wù)器(Secondary Server)上則是定時(shí) 發(fā)送存活封包(Heartbeat Packet)?至主要服務(wù)器?(Primary Server)上以通知目前 次要服務(wù)器的狀態(tài) |
etlschedule.exe | 負(fù)責(zé)提交定時(shí)任務(wù)作業(yè)的動作 |
? ? 1、etlrcv
? ? 2、etlmas
? ??
? ? 3、etlschedule
第六部分:ETL Automation知識庫說明
? ? 知識庫是ETL Automation最重要的組件之一。?
? ? 包括但不限于以下信息存儲在ETL知識庫中:ETL服務(wù)器標(biāo)識、 ETL任務(wù)的定義、任務(wù)之間的關(guān)系、任務(wù)運(yùn)行狀態(tài)歷史、ETL記錄日志、ETL文件接收日志及ETL事件日志等。
? ? ETL知識庫中比較重要的表如下:
? ? ? ? 1、ETL服務(wù)器配置表:ETL_Server
? ? ? ? 2、ETL子系統(tǒng)表:ETL_Sys
? ? ? ? 3、任務(wù)定義表:ETL_Job、ETL_Job_Source、ETL_Job_TimeWindow;
? ? ? ? 4、任務(wù)關(guān)系表:ETL_Job_Dependency、ETL_Job_Stream、ETL_RelatedJob
? ? ? ? 5、任務(wù)運(yùn)行狀態(tài)歷史表: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 中的作業(yè)及作業(yè)關(guān)連性。ETLMonitor用來監(jiān)看ETL服務(wù)器的狀態(tài)、作業(yè)的執(zhí)行狀態(tài)及其它異常情況。
由于GUI工具使用Java語句編寫,因此在運(yùn)行工具之前,必須安裝Java的運(yùn)行環(huán)境(Runtime Environment ),需要安裝的Java運(yùn)行環(huán)境版本為1.3.1及以上。
你可以至 Sun 的網(wǎng)站去下載最新的 Java 執(zhí)行環(huán)境版本。
第八部分:ETL任務(wù)調(diào)度
? ? ETL Automation通過控制文件對ETL任務(wù)自動調(diào)度
? ? 文件命名規(guī)則
? ? 作業(yè)的腳本文件與控制文件的命名必須與ETL Automation資料庫表中的相關(guān)定義一致。其對應(yīng)關(guān)系如下表所示:
? ??
文件或目錄 | 資料庫中的對應(yīng)表和字段 |
作業(yè)目錄名 | ETL_Job.Etl_Job |
作業(yè)腳本名 | 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調(diào)度作業(yè)時(shí),作業(yè)為何無法啟動? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ETL Automation的系統(tǒng)程序,以及所有作業(yè)腳本在正常執(zhí)行時(shí),都會在目錄$HOME/etl/lock下生成一個(gè).lock文件,因此當(dāng)重復(fù)啟動一個(gè)系統(tǒng)程序或作業(yè)腳本時(shí),都會首先檢查到lock目錄下已經(jīng)有相應(yīng)的.lock文件,這就避免了程序或作業(yè)的重復(fù)調(diào)用。
? ? 也可以通過ETL Monitor工具觀察到這一錯(cuò)誤。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? 解決方法:將目錄$HOME/etl/lock下的對應(yīng)文件清除。
? ? 2、Automation的作業(yè)調(diào)度性能為何會下降? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? 當(dāng)Automation的receive、queue、process等目錄下積壓的控制文件過多時(shí),或者資料庫表ETL_Job_Queue中存儲的記錄過多時(shí),etlrcv、etlmas以及etlschedule等進(jìn)程的執(zhí)行效率會降低,從而使得Automation對作業(yè)的調(diào)度能力顯著下降。
? ? 例如在EMS項(xiàng)目組,曾出現(xiàn)過作業(yè)由pending狀態(tài)轉(zhuǎn)為running狀態(tài)耗時(shí)45分鐘的情況。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 解決方法:加強(qiáng)對Automation目錄結(jié)構(gòu)的維護(hù),對運(yùn)行失敗的作業(yè)及時(shí)進(jìn)行處理,避免由于作業(yè)失敗而導(dǎo)致上述目錄中的控制文件產(chǎn)生積壓。同時(shí)要盡量減少資料庫表ETL_Job_Queue中的記錄數(shù)。
? ? 3、有數(shù)據(jù)文件的作業(yè)加載失敗后,為何無法重新啟動? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 當(dāng)作業(yè)帶有需要處理的數(shù)據(jù)文件時(shí),在讀取數(shù)據(jù)文件之前,Automation會首先將該數(shù)據(jù)文件的信息存入到資料庫表ETL_Received_File中。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? 由于數(shù)據(jù)文件格式錯(cuò)誤導(dǎo)致作業(yè)失敗后,Automation會自動將數(shù)據(jù)文件移入error目錄。之后,當(dāng)數(shù)據(jù)文件的格式修改無誤,并將數(shù)據(jù)文件和控制文件重新移入receive目錄后,作業(yè)仍然無法執(zhí)行。
? ? 解決方法:將資料庫表ETL_Received_File中的對應(yīng)記錄刪除。
? ? 4、定時(shí)觸發(fā)的作業(yè)突然開始執(zhí)行,且執(zhí)行完后還會再次反復(fù)執(zhí)行。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? 這是由于從庫表ETL_TimeTrigger中直接刪除了該作業(yè)的定時(shí)觸發(fā)記錄,而沒有同步更新ETL_Job表中TimeTrigger字段的值。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? Etlschedule進(jìn)程首先檢查ETL_Job表,認(rèn)為當(dāng)前作業(yè)是時(shí)間觸發(fā)的。隨后檢查ETL_TimeTrigger表時(shí),無法找到該作業(yè)的觸發(fā)時(shí)間,此時(shí)默認(rèn)其為0,而當(dāng)前時(shí)間通常大于等于0,因此系統(tǒng)認(rèn)為觸發(fā)條件滿足,該作業(yè)被不斷觸發(fā)。
? ? 解決方法:更新ETL_JOB表,同時(shí)將ETL_Job_Queue中已插入的對應(yīng)記錄刪除。并且今后盡量通過GUI工具操作,避免直接對資料庫表進(jìn)行update。
轉(zhuǎn)載于:https://blog.51cto.com/yucaiyuan/1873795
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的ETL AUTOMATION介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis队列缓存 + mysql 批量
- 下一篇: HAProxy实现动静分离