Kettle8在Linux Centos7部署并定时任务调度


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

posted @ 2024-03-14 16:32  疯子110  阅读(615)  评论(0编辑  收藏  举报