ETL AUTOMATION介绍
/**********************************/
目錄:
第一部分: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。
轉載于:https://blog.51cto.com/yucaiyuan/1873795
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ETL AUTOMATION介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis队列缓存 + mysql 批量
- 下一篇: HAProxy实现动静分离