kettle安装、使⽤、部署总结
最近完成了公司安排的kettle项⽬,从零学起到解决各种问题,已经基本使⽤相对熟练了,做些总结,以便学习。
kettle项⽬总结
kettle安装
这⾥安装只指安装在mac和Windows上,当然,mac和linux是相通的,问题不⼤。
Windows
1. 下载地址sourceforge/projects/pentaho/files/Data%20Integration/
选择绿⾊按钮,下载最新版,可能会很慢,挂个VPN,或者有没有⽹盘资源
2. 下载完后正常安装,当然,kettle是基于Java写的,所以在正式使⽤kettle之前务必下载并配置好Java,建议Java1.8,这⾥就不再赘
linux系统安装步骤csdn述了
3. ⽹上搜索mysql连接器(假设推送库和⽬标库都是mysql),下载对应版本,然后放到kettle的lib⽂件夹下
4. 将你Java⽂件夹下的tools.jar放在kettle的lib⽂件夹下(这⼀步⾮必须)
5. 如果出现⼀个new GC的报错,那么在libswt⽂件夹下,到对应版本⽂件夹,从⽹上下载最新swt.jar包,然后替换即可
mac
1. kettle因为基于Java编写,所以Windows和Mac及Linux都是⼀个版本,上⾯的下载地址及⽂件都可以直接使⽤
2. 配置同Windows
3. 这⾥Mac需注意⼀点,如果进⼊了kettle,双击DB连接,连接数据库报错,报错可能会提⽰你Java版本不对,但只要是1.8就绝对没
问题,这时候尝试右键,然后新建数据库连接,应该就可以连接上了,这就是Mac兼容性带来的问题
4. Mac兼容性还有⼀个问题,如果你开启了深⾊模式,然后进⼊页⾯可能会界⾯⽂字全都是⽩⾊,⾮常影响使⽤,很恶⼼⼈
kettle使⽤
kettle使⽤此处已Windows为准,因为kettle是界⾯图形开发,哪怕你是Linux,想开发也得打开图形界⾯
这⾥如何使⽤更多推荐⼏篇⾮常好的博客,他们已经总结的⾮常好了,可以学习学习
1. 这⾥推荐两个博客,第⼀个介绍的⾮常基础,第⼆个是增量推送,根据时间戳进⾏推送,⼤家可以看看
blog.csdn/fk478561641/article/details/80678506
www.jianshu/p/9fc6f0f041d2
2. 这⾥根据我的项⽬提⼏个kettle功能模块的使⽤吧
1. 可以通过⼀个转换,先写个sql,再设置变量的⽅式,动态设置表名称等
2. Java代码模块,可以实现动态拼接等功能,推荐篇博客
blog.csdn/qqfo24/article/details/82761359
3. 在转换中,可以通过‘获取系统信息’功能模块,获取系统时间等信息
4. 可以将查询要推送的数据排序,再通过去重的功能模块,去除重复数据,可以再多了解扩展⼀下
5. 时间戳在很多时候设置为time_stamp,但TIMESTAMP值⽀持的范围1970-01-01 08:00:01 到2038-01-19 11:14:07,
如果超过了会报错
6. 如果将多个作业合并,那么“开始”到下⼀步的连线,要⽤带锁的那个,绿⾊正确执⾏步骤的那个,只会执⾏第⼀个作业,其他
就会漏掉
kettle部署
这⾥部署服务器分为Linux和Windows,建议⼤家最好可以部署在Windows服务器上,原因见后⽂
Linux
先说说Linux服务器
1. kettle⽂件打压缩包,上传到Linux服务器指定位置,如:“/opt/data-integration”
2. 建好的kettle模型打包,上传⾄指定位置,作业⽂件位置如:“/opt/data-integration/kettle-kcdb/alarm/work.kjb”
3. 在⽬录“/opt/data-integration”下创建“logs”⽂件夹,存放⽇志⽂件
4. 本地写好sh脚本,提前准备好服务器java路径,格式如下
cd /opt/data-integration
export JAVA_HOME=/usr/local/tools/java/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
.
/kitchen.sh -file=/opt/data-integration/kettle-kcdb/alarm/work.kjb >>/opt/data-integration/logs/zltb_$(date +%Y%m%d).log
上传⾄指定位置,如:“/usr/local/tools/kettle-sh”
5. 解压kettle⽂件,配置kettle环境。确认⽂件位置对应
6. 测试要执⾏的脚本⽂件, chmod a+x *.sh,给test.sh添加⽂件的执⾏权限,等待执⾏过程,结束后查看数据库,⽂件插⼊成功,脚本正确
7. sh⽂件在Windows上编辑完成后,上传⾄Linux服务器上可能会有格式问题,如:Windows回车后后缀为“\d\r”,⽽Linux不能识
别“\r”
使⽤指令
执⾏清除格式命令:sed -i ‘s/\r$//’ *.sh
8. 在终端上,键⼊“crontab -e”,进⼊定时任务⽂件,格式如下:
*/5 * * * * /usr/local/tools/kettle-sh/status.sh
这个任务命令指每五分钟运⾏⼀次,星号分别代表分时⽇⽉周
9. 查看crontab服务状态
service crond status
10. 进⼊服务⽬录, 重启服务
systemctl restart crond.service
或执⾏
service crond restart
注:这⾥可以把restart改成start、stop等,功能不必⾔表
11. 这⾥可以使⽤ps -ef | grep kettle,查看运⾏kettle进程;使⽤free -h查看内存占⽤;使⽤top查看CPU占⽤;tail -f
/var/log/cron,查看定时任务运⾏⽇志。这些对于kettle优化有着很重要的意义
这⾥再讲讲kettle性能优化及相关的⼀些问题:
1. CPU优化问题。定时任务启动的kettle项⽬,会每次重开⼀个kettle应⽤,在启动的时候CPU占⽤⾼达55%左右,虽然在运⾏期间占
⽤CPU只有1.5%左右,并且任务完成后⾃动杀死所有启动的进程,但问题来了,这还只是启动⼀个,如果多个同时启动,那恭喜你了。这个问题⽬前我没到很好的解决⽅法,只能尽量合并kettle作业,然后错开启动时间,如果⼩伙伴到⽐较好的解决⽅案,可以告知⼀下
2. 内存优化问题。kettle在启动后,假设两⼩时推送⼀次,他会启动kettle应⽤,然后⼀直挂着等待两⼩时后再执⾏,执⾏完成后再杀死
进程。如果这时候还未来得及杀死进程,⼜启动新的,就会导致内存占⽤不断增加,最后服务器崩溃,所以这块加个锁,让他没有结束,就算定时任务调脚本,也依然失败,直到久的结束后,下次调⽤脚本才会启动。可以看看这个博客最后部分,介绍的很详细blog.csdn/zgc55987/article/details/106528889
3. 还有就是修改kettle⾃⾝占⽤的⼤⼩了,毕竟Java编写,我们更改他的jvm呗。修改⽂件⽬录下的spoon.sh启动脚本,⽹上很多相关
内容,这⾥不再赘述
Windows
Windows就没有Linux那么多事
1. ⾸先,kettle⽂件打压缩包,上传到服务器指定位置
2. 像安装到Windows那样,该配置的先配置好
3. 启动kettle,将所有作业放到⼀个kettle应⽤⾥执⾏,设定好时间,解决
4. 因为上⾯说过了,启动的时候占⽤内存较⼤,会加载各种配置⽂件及依赖等,但Windows不⽤定时任务启动呀,所以不必过多担⼼内
存等,当然,能优化还是最好优化
以上就是总结的全部内容了,后续也许会再补充
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论