Kettle排程和監控

     Kettle排程和監控的理論知識介紹,具體內容如下:

1 排程

    在這個指導文件中,主介紹兩種型別Kettle任務和轉換的排程方式。

Ø  作業系統級別的排程器:對於ETL來說,排程不是獨一無二的。這是作業系統能夠提供標準排程的一般性需要,如UNIX衍生系統上的Cron以及Windows系統上的任務排程器。這些排程器能夠擁戴排程Kettle命令列程式來執行任務和轉換。

Ø  Quartz排程器構建成Pentalo BI伺服器:Kettle作為Pentalo BI棧的一部分,許多Kettle 使用者可能也使用或者熟悉Pentalo BI伺服器。排程器構建成Pentalo BI伺服器能夠被用來執行一系列執行Kettle任務和轉換工作。

    所有主要作業系統提供了構建排程任務的特性,這些被任務能夠被作為系統級別的排程器來排程。下面,主要來介紹如何使用命令列來執行Kettle 任務和轉換。

1.1 命令列執行Kettle任務和轉換

    使用Kitchen和Pan命令列工具能夠啟動Kettle任務和轉換。Pan和Kettle是環繞資料整合引擎的輕量級封裝器(lightweight wrappers)。Kitchen 和 Pan是使用shell scripts執行任務和轉換的,比如在Windows環境中Kitchen.bat 和Pan.bat。在Linux環境下,對應的執行指令碼是Kitchen.sh 和Pan.sh。

一般命令列引數能夠按如下分類:

  • 指定job 和transform
  • 控制日誌
  • 指定倉庫(repository)
  • 列出有效的倉庫和它們的內容。

Kettle 和Pan一般命令列引數列表

名稱

介紹

norep

 

不連線到任何一個repository,避免自動登入很有用。

rep

倉庫名稱

連線到指定名稱的倉庫

user

倉庫的使用者名稱

指定使用者名稱來連線到指定的倉庫

pass

倉庫的密碼

使用指定的密碼來連線到指定的倉庫

listrep

 

顯示有效的倉庫

dir

路徑

指定倉庫的路徑

listdir

 

列出有效的倉庫job/transform路徑

file

檔名

指定儲存了job或者transform的檔案

level

日誌級別

Error | Nothing |Basic | Detailed |Debug | Rowlevel

logfile

日誌的檔名

指定日誌的檔名稱

version

 

顯示版本,校訂號和工具的構建日期

注意:dir and listdir parameters are dependent upon the tool. For Kitchen,theseparameters refer to the repositories’ job directories, or totransformation directories in the case of Pan.

Kettle命令列引數指定

名稱

介紹

job

Job名稱

指定儲存在倉庫中job的名稱

listjobs

 

通過dir引數列出存在於倉庫中有效jobs

 

Kettle命令列引數的程式碼例項。

#

# list all available parameters

#

kettle-home> ./kitchen.sh

#

# run the job stored in

# /home/foo/daily_load.kjb

#

kettle-home> ./kitchen.sh \

> /file:/home/foo/daily_load.kjb

#

# run the daily_load job from the

# repository named pdirepo

#

kettle-home> ./kitchen.sh/rep:pdirepo \

> /user:admin \

> /pass:admin \

> /dir://job:daily_load.kjb

1.2 基於UNIX系統:cron

對於UNIX派生的系統中,cron功能是很好的job排程器。你沒有必要安裝其它任何工具使其有效執行。

Cron字串定義有5個日期/時間域值,以空白空間分割,從左到右,日期時間域如下:

l minutes: 0–59

l hours: 0–23

l day of month: 1–31

l month: 1–12

l day of week: 0–6, where 0 denotesSunday, 1 Monday, and so on

舉例說明:

0 1 ? * 5run_kettle_weekly_invoices.sh

 上面的例子,表示“每天的星期五的一點”執行這個kettle指令碼。

1.3 使用Pentaho 構建Scheduler

   需要使用Pentaho BI Server, 更多的資訊,參考web資源

2 監控

2.1 郵件通知

    Kettle中有兩種方式監控job或者transform的執行情況。每個job中的transform都可以配置對應的日誌(如下圖)。

具體的配置請參考說明文件。郵件元件相對而言,更簡單,這裡就不詳細

2.2 日誌表

    大部分Kettle元件能夠輸出以文字行的形式的日子資訊.例如,當一個步驟完成, 一行資訊顯示了這個事件。

2010/06/1810:36:29 – Step name.0 -Finished processing (I=0, O=0, R=0, W=25, U=0, E=0)

你會發現日誌是由以下幾部分組成:

Ø 日期和時間

Ø 步驟名稱,顯示在日期和時間之後

Ø 日誌文字

Ø 這些部分已空白、破折號和橫線分割

下面列舉Kettle的日子級別:

Rowlevel: 答應所有在Kettle中的有效日誌,包括在大量複雜步驟的資訊;

Debugging: 產生大量的日誌資訊,主要用於除錯,但是不是在行級別(row level);

Detailed:允許使用者看到比基本日誌級別更富比較性的資訊,額外的資訊例項包括SQL查詢語句和一般的DDL都會產生。

Basic:預設的日子級別;僅僅列印這些能夠反映在步驟或者任務條目上的資訊。

Minimal:通知你僅僅關於一個任務或者轉化的資訊。

Errorlogging only: 如果那兒有一個錯誤,顯示錯誤訊息;否則,什麼都不顯示。

Nothingat all: 即使當有錯誤存在的時候,不要產生任何日誌。

   轉換日誌表

  在轉換日誌表級別,有四個日誌表能夠被更新。

l  轉換日誌表

l  步驟日誌表

l  效能日誌表

l  日誌管道表

在轉換的結尾,一個轉換過程的預設行為就是寫日誌到日誌表裡。

轉換日誌表

點選右鍵,在彈出框中選擇。彈出轉換過程的屬性設定。

 

設定內容如下圖所示:

                     Transformation 日誌表屬性設定

在左邊的面板,你看到不同的你能夠定義的日子表。下面有具體引數描述:

  • Log Connection: 儲存目標日誌表的資料庫名稱,從選擇下滑鍵中,你可以選擇存在的資料庫定義的名稱。
  • Log table schema: 包含日誌表的資料庫體系結構。
  • Log table name: 日誌表的名稱
  • Logging interval (seconds): 在轉換執行過程中,根據這個選擇引數值間歇地寫資訊到日誌表中。如果你沒有指定這個引數值,日誌表將僅僅只能在轉換開始和完成時被更新。
  • Log record timeout (in days):在它插入一個新值之前,根據這個引數值來來刪除日誌表中老的記錄。
  • Log size limit in lines: 對於不支援大字元欄位的資料庫,日誌限定了這個文字的大小。

     依次類推,設定步驟日誌表、效能日誌表、日誌管道表。另外,同轉換日誌表相似,你也可以設定任務日誌表,設定方式基本一致。