kettle安装、使用、部署总结

最近完成了公司安排的kettle项目,从零学起到解决各种问题,已经基本使用相对熟练了,做些总结,以便学习。

kettle安装

这里安装只指安装在mac和Windows上,当然,mac和linux是相通的,问题不大。

Windows

  1. 下载地址https://sourceforge.net/projects/pentaho/files/Data%20Integration/
    选择绿色按钮,下载最新版,可能会很慢,挂个VPN,或者找找有没有网盘资源
  2. 下载完后正常安装,当然,kettle是基于Java写的,所以在正式使用kettle之前务必下载并配置好Java,建议Java1.8,这里就不再赘述了
  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. 这里推荐两个博客,第一个介绍的非常基础,第二个是增量推送,根据时间戳进行推送,大家可以看看
    https://blog.csdn.net/fk478561641/article/details/80678506
    https://www.jianshu.com/p/9fc6f0f041d2
  2. 这里根据我的项目提几个kettle功能模块的使用吧
    1. 可以通过一个转换,先写个sql,再设置变量的方式,动态设置表名称等
    2. Java代码模块,可以实现动态拼接等功能,推荐篇博客
      https://blog.csdn.net/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应用,然后一直挂着等待两小时后再执行,执行完成后再杀死进程。如果这时候还未来得及杀死进程,又启动新的,就会导致内存占用不断增加,最后服务器崩溃,所以这块加个锁,让他没有结束,就算定时任务调脚本,也依然失败,直到久的结束后,下次调用脚本才会启动。可以看看这个博客最后部分,介绍的很详细
    https://blog.csdn.net/zgc55987/article/details/106528889
  3. 还有就是修改kettle自身占用的大小了,毕竟Java编写,我们更改他的jvm呗。修改文件目录下的spoon.sh启动脚本,网上很多相关内容,这里不再赘述

Windows

Windows就没有Linux那么多事

  1. 首先,kettle文件打压缩包,上传到服务器指定位置
  2. 像安装到Windows那样,该配置的先配置好
  3. 启动kettle,将所有作业放到一个kettle应用里执行,设定好时间,解决
  4. 因为上面说过了,启动的时候占用内存较大,会加载各种配置文件及依赖等,但Windows不用定时任务启动呀,所以不必过多担心内存等,当然,能优化还是最好优化

以上就是总结的全部内容了,后续也许会再补充

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值