kettle使用中要注意的問題及kettle性能調優

一、命名規則

作業、轉換、步驟的命名規則有可能會出現兩種極端情況:

  • 把命名規則設計的過於繁瑣
  • 根本沒有命名規則

顯然這兩種都不可行。

作業和轉換建議的命名規則:

1.轉換:tr_${階段名}_${表名}/${業務名}_customer

2.作業:jb_${階段名}_${表名}/${業務名}_customer

 

二、kettle配置文件

  • .kettel/kettle.properties:

此文件包含轉換或作業裏需要的變量,spoon啓動後會自動加載該配置文件裏的自定義參數。

ps:kettle裏一些常量可以寫在配置文件裏,在kettle裏用${xxx}引用

#長時更新時間(job爲十分鐘定時,此時應多掃描5分鐘)
sql_limit= DATE_SUB( NOW(), INTERVAL 15 minute )

#短時更新時間(job爲十分鐘定時,此時應多掃描5分鐘)
urgent_sql_limit= DATE_SUB( NOW(), INTERVAL 15 minute )

#全盤掃描開始時間(如果遭遇宕機以及強制停止kjb進程,需設置爲kjb進程停止時間之前)
start_time = '2019-01-01 00:00:00'

#數據庫
mysql_host = xxx
mysql_pluto_report_datasource = xxx
mysql_pluto_user_datasource = xxx
mysql_pluto_payment_datasource = xxx
mysql_pluto_map_route_planning_datasource = xxx
mysql_port = xxx
mysql_user = xxx
mysql_password = xxx

數據庫db配置引用:

轉換sql引用:

  • ./kettle/shared.xml:

此文件裏包含共享對象,其類似於轉換的步驟、數據庫連接定義、集羣服務器定義等這些可以一次定義,然後在轉換和作業裏多次引用的對象。  spoon啓動時,會加載shared.xml自定義的所有對象,且這些對象級別高於單個轉換、作業裏的對象。

  • .spoonrc

       用於存儲Spoon程序的運行參數和狀態。

 

三、日誌管理

kettle可以使用數據庫日誌和文件日誌

數據庫日誌:可以記錄更多的內容,結構化,方便查詢和管理。

文件日誌:比較靈活,如若發生錯誤,可將文件單獨拿出來分析。

項目上線後,由於防火牆設置或者安全因素,維護者可能無法訪問日誌數據庫,所以一般來說還是使用文件日誌。

·數據庫日誌設置方式: 

?文件日誌在轉換裏指定輸出文件。

 

四、處理錯誤通知

1.在主作業流中每個作業執行失敗時都應該發送錯誤郵件

2.作業流中前後無關的轉換應用 ,應使用無條件的節點條件,這樣可以保證後面的轉換也可正常運行。

 

 

五、調度問題

使用crontab還是kettle自帶調度,還是第三方調度?

  • 應避免使用kettle任務的start調度,kitchen進程會長期駐留,容易產生OOM錯誤。
  • 可以使用操作系統的調度,比如linux系統的craontab調度。kitchen執行完會完全退出,不駐留內存。
  • 也可以使用第三方調度,傳遞給第三方程序執行。

 

六、調優

kettle由純java編寫,性能非常強大,但是如果操作不當,會產生性能問題。

·容易產生性能問題的步驟

  • 查詢類:數據庫查詢,數據庫連接,http,get/post,webservice,插入更新。
  • 運算類:格式轉換,複雜計算
  • 排序類:排序,合併連接,分組

·調優

關鍵:Rowset

  1. Rowset是兩個步驟之間的緩存。
  2. 性能調優需要找出性能瓶頸步驟。

性能瓶頸的調優方案:

  • 數據庫查詢類,相應表建立合適的數據庫索引
  • 增加複製數:查詢類

  • 加大緩存
  • 集羣:查詢類,運算類,排序
  • 死鎖問題:數據庫死鎖(讀寫同一表);轉換本身死鎖
  • 日誌級別

Rowset日誌級別性能會嚴重下降,是Basic的1/10,推薦使用Basic,若數據量巨大,更新頻繁,且無查看步驟量需求,推薦使用Error級別日誌

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章