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

kettle项目总结

  • kettle安装
    • Windows
    • mac
  • kettle使用
  • kettle部署
    • Linux
    • Windows

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不用定时任务启动呀,所以不必过多担心内存等,当然,能优化还是最好优化

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

kettle安装、使用、部署总结相关推荐

  1. kettle安装及使用

    文章目录 1.kettle简述 1.1.kettle是什么 2.kettle安装配置 2.1.先决条件 2.1.1.安装jdk8 2.2.kettle下载 2.3.打开kettle 3.kettle基 ...

  2. Kettle安装与使用

    一.Kettle简介 Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transfo ...

  3. Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit

    文章目录 为什么要静态编译(static link) 1.源码下载/source code download 2. 编译工具下载/compiler download 编译环境选择:MinGW/MSVC ...

  4. Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

  5. Qt最新版5.12在Windows环境静态编译安装和部署的完整过程(VS2017)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

  6. Ansible的安装及部署

    Ansible的安装及部署 1 实验环境 2 Ansible的安装 3 Ansible的基本信息 4 构建Ansible清单 4.1 全局清单 4.2 设定受控主机的组 4.2.1 清单查看 4.2. ...

  7. idea上传项目到码云_mall前端项目的安装与部署

    本文主要讲解mall前端项目mall-admin-web的在Windows和Linux环境下的安装及部署. Windows下的安装及部署 下载nodejs并安装 下载地址:https://nodejs ...

  8. Linux下Redis3.2的安装和部署

    redis简介: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(so ...

  9. vSphere虚拟化之ESXi安装及部署

    vSphere虚拟化之ESXi的安装及部署(上) 一.什么是vSphere? vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个 ...

最新文章

  1. 《迷人的8051单片机》----3.4 程序
  2. 说说如何搭建 Nginx 反向代理 Tomcat
  3. 代码迁移之旅(二)- 渐进式迁移方案
  4. warning: directory not found for option“XXXXXX”
  5. java制表符_Java地位无可动摇的12个原因
  6. JS字符串转换为JSON的四种方法笔记
  7. 解决自建ca认证后浏览器警告
  8. Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29)
  9. python的类中包含什么_Python中的类(中)
  10. Leetcode 刷题笔记(二十七) ——动态规划篇之买股票问题(一)
  11. OC算法 输出手机号码归属地
  12. 倾斜摄影相机焦距与实景三维模型效果的关系
  13. 渲染算法学习(四)-- Environment Lighting
  14. 【CSDN英雄会】囯炬CEO张代浩:做写架构的人,做制定游戏规则的人
  15. asp.net报错:ConnectionString 属性尚未初始化
  16. python期末大作业-图形化爬虫
  17. 最齐全的教辅文具3dm犀牛模型素材,速来收藏
  18. 抢单开发系统php,开发抢单系统
  19. js时区时间转换格式:h5内转换含有T字母的8小时时区时间格式
  20. 别小看“Spring过滤器”,这些知识点你必须得掌握

热门文章

  1. 拾忆Elasticsearch03:SpringBoot整合 Elasticsearch
  2. 无功控制器电容投切方案整理
  3. 10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
  4. 字节跳动疯狂扩张:IPO前的最后一战
  5. 2022-2028年中国健康险行业市场发展现状及竞争格局预测报告
  6. amd服务器cpu皓龙性能,真六核性能有多强?AMD皓龙2435测试
  7. Hadoop服务启动出现Permission denied (publickey,password)
  8. 深入学习java源码之Math.max()与 Math.min()
  9. 首届“十大最具价值”智能安防创业项目遴选榜单丨Xtecher联合中投协权威发布...
  10. 如何高效迅速的进行CodeReview