Kettle8在Linux Centos7部署並定時任務排程
kettle介紹
配置環境
安裝JAVA
安裝Kettle
上傳本地資源庫
修改Kettle配置
Kettle調優
上傳JDBC驅動包
新增jndi連線池配置
編寫執行指令碼
設定linx定時任務排程
Kettle使用kettle.properties
Kettle8在Linux Centos7部署並定時任務排程
主要介紹如何在Linux中部署kettle,正式配置環境,執行任務,轉換以及設定定時任務;
kettle介紹
免費開源的基於java的企業級ETL工具,功能強大簡單易用,無可抗拒
ETL(Extract-Transform-Load的縮寫,即資料抽取、轉換、裝載的過程),對於企業或行業應用來說,我們經常會遇到各種資料的處理,轉換,遷移,所以瞭解並掌握一種etl工具的使用,必不可少,這裡我介紹一個我在工作中使用了3年左右的ETL工具Kettle,本著好東西不獨享的想法,跟大家分享碰撞交流一下!在使用中我感覺這個工具真的很強大,支援圖形化的GUI設計介面,然後可以以工作流的形式流轉,在做一些簡單或複雜的資料抽取、質量檢測、資料清洗、資料轉換、資料過濾等方面有著比較穩定的表現,其中最主要的我們透過熟練的應用它,減少了非常多的研發工作量,提高了我們的工作效率
中文官網:http://www.kettle.org.cn/
下載地址: https://sourceforge.net/projects/pentaho/files/
配置環境
安裝JAVA
離線安裝java
下載對應的JDK版本
檢視原系統jdk版本
java -version
圖中可看出jdk版本為openJDK 需要解除安裝;如果沒有安裝則跳過
檢視安裝的資訊
rpm -qa | grep java
解除安裝OpenJDK
rpm -e --nodeps tzdata-java-2019c-1.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.232.b09-0.el7_7.x86_64
安裝jdk
rpm -ivh jdk-8u251-linux-x64.rpm
設定變數環境
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_251
export JAVA_BIN=/usr/java/jdk1.8.0_251/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
環境變數生效,需要執行命令
source /etc/profile
驗證JDK是否安裝成功
java -version
安裝Kettle
將下載後的kettle工具pdi-ce-8.3.0.0-371.zip上傳至linux伺服器,kettle在windows和linux系統中通用;
windows使用Kitchen.bat,linux使用kitchen.sh;
解壓檔案
unzip -o -d /home/program/kettle/ pdi-ce-8.3.0.0-371.zip
安裝完成
上傳本地資源庫
在windows中編寫好任務、轉換;打包資源庫上傳至linux;
上傳壓縮檔案到linux伺服器
解壓檔案
unzip -o -d /home/program/kettle/kettle_repo xxx.zip
建立kettle資源庫檔案,在根目錄下
vi repositories.xml
新增此內容,改為自己實際的內容
<?xml version="1.0" encoding="UTF-8"?>
<repositories>
<repository>
<id>KettleFileRepository</id>
<name>資源庫名稱</name>
<description>File repository</description>
<is_default>false</is_default>
<base_directory>資源庫地址</base_directory>
<read_only>N</read_only>
<hides_hidden_files>N</hides_hidden_files>
</repository>
</repositories>
引數:
name:資源庫名稱 xxx
base_directory:資源庫地址 /home/program/kettle/kettle_repo/xxx
修改Kettle配置
Kettle調優
調整JVM大小進行效能最佳化,修改Kettle定時任務中的Kitchen或Pan或Spoon指令碼。
linux下修改spoon.sh檔案
引數參考:
-Xmx1024m: 設定JVM最大可用記憶體為1024M。
-Xms512m: 設定JVM促使記憶體為512m。此值可以設定與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配記憶體。
-Xmn2g: 設定年輕代大小為2G。整個JVM記憶體大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代後,將會減小年老代大小。此值對系統效能影響較大,Sun官方推薦配置為整個堆的3/8。
-Xss128k: 設定每個執行緒的堆疊大小。JDK5.0以後每個執行緒堆疊大小為1M,以前每個執行緒堆疊大小為256K。更具應用的執行緒所需記憶體大小進行調整。在相同實體記憶體下,減小這個值能生成更多的執行緒。但是作業系統對一個程序內的執行緒數還是有限制的,不能無限生成,經驗值在3000~5000左右。
-XX:MaxPermSize JVM最大允許分配的非堆記憶體,按需分配
上傳JDBC驅動包
上傳驅動包至kettle根目錄下\lib
oracle:ojdbc14-10.2.0.4.0.jar
mysql: mysql-connector-java-5.1.47.jar
新增jndi連線池配置
如在資源庫中使用了jndi連線池新增配置
kettle jndi的使用
kettle連線池配置
vi simple-jndi/jdbc.properties
1
檔案最下方新增配置
#mysql配置
demo/type=javax.sql.DataSource
demo/driver=com.mysql.cj.jdbc.Driver
demo/url=jdbc:mysql://127.0.0.1:3366/demo?characterEncoding=utf8&serverTimezone=Asia/Shanghai
demo/user=root
demo/password=root
#oracle_local
oracle/type=javax.sql.DataSource
oracle/driver=oracle.jdbc.driver.OracleDriver
oracle/url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
oracle/user=oracle
oracle/password=oracle
##sqlserver_local
sqlserver/type=javax.sql.DataSource
sqlserver/driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver/url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=sqlserver
sqlserver/user=sqlserver
sqlserver/password=sqlserver
編寫執行指令碼
進入/home/program/kettle 目錄下建立執行指令碼
vi start.sh
1
export JAVA_HOME=/home/program/jdk8
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
REP_NAME=資源庫名稱
JOB_NAME=執行任務名稱
LOG_DATE="`date +%Y-%m-%d`"
LOG_PATH=/home/logs/etl/$JOB_NAME"_"$LOG_DATE"_log.log"
DIR_PATH=/
FILE=/home/program/kettle/kettle_repo/xxxx/$JOB_NAME".kjb"
LOG_LEVEL=Basic
echo ==================================================================================================
echo 開始資料轉換:
echo 資源庫:$REP_NAME
echo 任務名稱:$JOB_NAME
echo 日誌路徑:$LOG_PATH
echo ==================================================================================================
/home/program/kettle/data-integration/kitchen.sh -rep:$REP_NAME -dir:$DIR_PATH -file:$FILE -job:$JOB_NAME -level:$LOG_LEVEL>>$LOG_PATH
kitchen.sh 引數介紹:
-rep: 執行資源庫名稱
-dir: kettle資源庫中存放任務轉換的根目錄
-file: 執行的任務檔案
-job:執行任務名稱
-level:log級別 (Basic, Detailed, Debug, Rowlevel, Error, Nothing);如需提高效能則Basic即可
更多引數介紹詳看:kettle介紹
設定指令碼為可執行
chmod +x start.sh
執行指令碼
./start.sh
檢視執行日誌
tail -f -n 2000 /home/logs/etl/xxxx.log
設定linx定時任務排程
配置crontab例行性工作排程
crontab例行性工作可以直接在/etc/crontab中進行配置,但是不建議這樣子做,因為有可能會因為輸入法的問題而導致無法執行。我們使用crontab–e來進行編輯。
下面來看下使用crontab –e進入編輯介面後的六個欄位引數說明:
欄位:* * * * * 命令串
釋義:分 時 日 月 周 具體要執行的命令或者指令碼等,具體可檢視cron表示式
上面的*表示具體的時間數字,在實際應用中,要替換成有意義的資料。
輸入crontab –e進入編輯介面,在編輯介面進行計劃任務的設定
0 */1 * * * bash /home/program/kettle/start.sh
上面命令的意義是:每1小時就會執行/home/program/kettle/start.sh指令碼,而且該指令碼的內容就是執行我們的job。這樣就實現了每小時執行排程的工作了。
Kettle使用kettle.properties
配置如下
commit_size = 5000
#郵箱授權碼
email_send_auth = EABSHTFXLMEYNCYH
#郵箱傳送地址
email_send_url = smtp.163.com
#郵箱傳送人
email_send_user =xxxxx@163.com
#傳送使用者,多個空格隔開
email_user = xxxx@qq.com
thread_size = 27
文章知識點與官方知識檔案匹配,可進一步學習相關知識
————————————————
版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。
原文連結:https://blog.csdn.net/qq_34960590/article/details/123014442