前文:
作爲一款主流ELT工具,比同類數據抽取工具DataX、Sqoop更加強大,可以通過圖形化界面直接對接各個數據源,進行任何數據格式的數據轉換及處理。
一、核心:作業及轉換
轉換(步驟流):數據輸入——處理邏輯——輸出
專業(工作流):Start——轉換1——轉換2——成功/失敗——郵件
二、簡單轉換流程
1、配置連接
2、添加組件並進行啓動執行
3、查看作業相關參數性能
二、作業操作
說明:Start——多個轉換模塊——寫日誌、發郵件等等。。
通過Start可以設置定時執行
三、大數據平臺相關配置
1、不同平臺環境
選擇如:hdp30文件夾存放
2、配置文件 pdi-ce-9.0.0.0-423\data-integration\plugins\pentaho-big-data-plugin\plugin.properties
四、調優
1、調整JVM大小進行性能優化,修改Kettle根目錄下的Spoon腳本。
參數參考:
-Xmx2048m:設置JVM最大可用內存爲2048M。
-Xms1024m:設置JVM促使內存爲1024m。此值可以設置與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配內存。
-Xmn2g:設置年輕代大小爲2G。整個JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小爲64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。
-Xss128k:設置每個線程的堆棧大小。JDK5.0以後每個線程堆棧大小爲1M,以前每個線程堆棧大小爲256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。
2、 調整提交(Commit)記錄數大小進行優化,Kettle默認Commit數量爲:1000,可以根據數據量大小來設置Commitsize:1000~50000
3、儘量使用數據庫連接池;
4、儘量提高批處理的commit size;
5、儘量使用緩存,緩存儘量大一些(主要是文本文件和數據流);
6、Kettle是Java做的,儘量用大一點的內存參數啓動Kettle;
7、可以使用sql來做的一些操作儘量用sql;
Group , merge , stream lookup,split field這些操作都是比較慢的,想辦法避免他們.,能用sql就用sql;
8、插入大量數據的時候儘量把索引刪掉;
9、儘量避免使用update , delete操作,尤其是update,如果可以把update變成先delete, 後insert;
10、能使用truncate table的時候,就不要使用deleteall row這種類似sql合理的分區,如果刪除操作是基於某一個分區的,就不要使用delete row這種方式(不管是deletesql還是delete步驟),直接把分區drop掉,再重新創建;
11、儘量縮小輸入的數據集的大小(增量更新也是爲了這個目的);
12、儘量使用數據庫原生的方式裝載文本文件(Oracle的sqlloader, mysql的bulk loader步驟)。