kettle安装、使用、部署总结
最近完成了公司安排的kettle项目,从零学起到解决各种问题,已经基本使用相对熟练了,做些总结,以便学习。
kettle项目总结
- kettle安装
- Windows
- mac
- kettle使用
- kettle部署
- Linux
- Windows
kettle安装
这里安装只指安装在mac和Windows上,当然,mac和linux是相通的,问题不大。
Windows
- 下载地址https://sourceforge.net/projects/pentaho/files/Data%20Integration/
选择绿色按钮,下载最新版,可能会很慢,挂个VPN,或者找找有没有网盘资源 - 下载完后正常安装,当然,kettle是基于Java写的,所以在正式使用kettle之前务必下载并配置好Java,建议Java1.8,这里就不再赘述了
- 网上搜索mysql连接器(假设推送库和目标库都是mysql),下载对应版本,然后放到kettle的lib文件夹下
- 将你Java文件夹下的tools.jar放在kettle的lib文件夹下(这一步非必须)
- 如果出现一个new GC的报错,那么在libswt文件夹下,找到对应版本文件夹,从网上下载最新swt.jar包,然后替换即可
mac
- kettle因为基于Java编写,所以Windows和Mac及Linux都是一个版本,上面的下载地址及文件都可以直接使用
- 配置同Windows
- 这里Mac需注意一点,如果进入了kettle,双击DB连接,连接数据库报错,报错可能会提示你Java版本不对,但只要是1.8就绝对没问题,这时候尝试右键,然后新建数据库连接,应该就可以连接上了,这就是Mac兼容性带来的问题
- Mac兼容性还有一个问题,如果你开启了深色模式,然后进入页面可能会界面文字全都是白色,非常影响使用,很恶心人
kettle使用
kettle使用此处已Windows为准,因为kettle是界面图形开发,哪怕你是Linux,想开发也得打开图形界面
这里如何使用更多推荐几篇非常好的博客,他们已经总结的非常好了,可以学习学习
- 这里推荐两个博客,第一个介绍的非常基础,第二个是增量推送,根据时间戳进行推送,大家可以看看
https://blog.csdn.net/fk478561641/article/details/80678506
https://www.jianshu.com/p/9fc6f0f041d2 - 这里根据我的项目提几个kettle功能模块的使用吧
- 可以通过一个转换,先写个sql,再设置变量的方式,动态设置表名称等
- Java代码模块,可以实现动态拼接等功能,推荐篇博客
https://blog.csdn.net/qqfo24/article/details/82761359 - 在转换中,可以通过‘获取系统信息’功能模块,获取系统时间等信息
- 可以将查询要推送的数据排序,再通过去重的功能模块,去除重复数据,可以再多了解扩展一下
- 时间戳在很多时候设置为time_stamp,但TIMESTAMP值支持的范围1970-01-01 08:00:01 到2038-01-19 11:14:07,如果超过了会报错
- 如果将多个作业合并,那么“开始”到下一步的连线,要用带锁的那个,绿色正确执行步骤的那个,只会执行第一个作业,其他就会漏掉
kettle部署
这里部署服务器分为Linux和Windows,建议大家最好可以部署在Windows服务器上,原因见后文
Linux
先说说Linux服务器
- kettle文件打压缩包,上传到Linux服务器指定位置,如:“/opt/data-integration”
- 建好的kettle模型打包,上传至指定位置,作业文件位置如:“/opt/data-integration/kettle-kcdb/alarm/work.kjb”
- 在目录“/opt/data-integration”下创建“logs”文件夹,存放日志文件
- 本地写好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”
- 解压kettle文件,配置kettle环境。确认文件位置对应
- 测试要执行的脚本文件, chmod a+x *.sh,给test.sh添加文件的执行权限,等待执行过程,结束后查看数据库,文件插入成功,脚本正确
- sh文件在Windows上编辑完成后,上传至Linux服务器上可能会有格式问题,如:Windows回车后后缀为“\d\r”,而Linux不能识别“\r”
使用指令
执行清除格式命令:sed -i ‘s/\r$//’ *.sh - 在终端上,键入“crontab -e”,进入定时任务文件,格式如下:
*/5 * * * * /usr/local/tools/kettle-sh/status.sh
这个任务命令指每五分钟运行一次,星号分别代表分时日月周 - 查看crontab服务状态
service crond status - 进入服务目录, 重启服务
systemctl restart crond.service
或执行
service crond restart
注:这里可以把restart改成start、stop等,功能不必言表 - 这里可以使用ps -ef | grep kettle,查看运行kettle进程;使用free -h查看内存占用;使用top查看CPU占用;tail -f /var/log/cron,查看定时任务运行日志。这些对于kettle优化有着很重要的意义
这里再讲讲kettle性能优化及相关的一些问题:
- CPU优化问题。定时任务启动的kettle项目,会每次重开一个kettle应用,在启动的时候CPU占用高达55%左右,虽然在运行期间占用CPU只有1.5%左右,并且任务完成后自动杀死所有启动的进程,但问题来了,这还只是启动一个,如果多个同时启动,那恭喜你了。这个问题目前我没找到很好的解决方法,只能尽量合并kettle作业,然后错开启动时间,如果小伙伴找到比较好的解决方案,可以告知一下
- 内存优化问题。kettle在启动后,假设两小时推送一次,他会启动kettle应用,然后一直挂着等待两小时后再执行,执行完成后再杀死进程。如果这时候还未来得及杀死进程,又启动新的,就会导致内存占用不断增加,最后服务器崩溃,所以这块加个锁,让他没有结束,就算定时任务调脚本,也依然失败,直到久的结束后,下次调用脚本才会启动。可以看看这个博客最后部分,介绍的很详细
https://blog.csdn.net/zgc55987/article/details/106528889 - 还有就是修改kettle自身占用的大小了,毕竟Java编写,我们更改他的jvm呗。修改文件目录下的spoon.sh启动脚本,网上很多相关内容,这里不再赘述
Windows
Windows就没有Linux那么多事
- 首先,kettle文件打压缩包,上传到服务器指定位置
- 像安装到Windows那样,该配置的先配置好
- 启动kettle,将所有作业放到一个kettle应用里执行,设定好时间,解决
- 因为上面说过了,启动的时候占用内存较大,会加载各种配置文件及依赖等,但Windows不用定时任务启动呀,所以不必过多担心内存等,当然,能优化还是最好优化
以上就是总结的全部内容了,后续也许会再补充
kettle安装、使用、部署总结相关推荐
- kettle安装及使用
文章目录 1.kettle简述 1.1.kettle是什么 2.kettle安装配置 2.1.先决条件 2.1.1.安装jdk8 2.2.kettle下载 2.3.打开kettle 3.kettle基 ...
- Kettle安装与使用
一.Kettle简介 Kettle最早是一个开源的ETL(Extract-Transform-Load的缩写)工具,全称为KDE Extraction, Transportation, Transfo ...
- 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 ...
- Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)
文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...
- Qt最新版5.12在Windows环境静态编译安装和部署的完整过程(VS2017)
文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...
- Ansible的安装及部署
Ansible的安装及部署 1 实验环境 2 Ansible的安装 3 Ansible的基本信息 4 构建Ansible清单 4.1 全局清单 4.2 设定受控主机的组 4.2.1 清单查看 4.2. ...
- idea上传项目到码云_mall前端项目的安装与部署
本文主要讲解mall前端项目mall-admin-web的在Windows和Linux环境下的安装及部署. Windows下的安装及部署 下载nodejs并安装 下载地址:https://nodejs ...
- Linux下Redis3.2的安装和部署
redis简介: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(so ...
- vSphere虚拟化之ESXi安装及部署
vSphere虚拟化之ESXi的安装及部署(上) 一.什么是vSphere? vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个 ...
最新文章
- 《迷人的8051单片机》----3.4 程序
- 说说如何搭建 Nginx 反向代理 Tomcat
- 代码迁移之旅(二)- 渐进式迁移方案
- warning: directory not found for option“XXXXXX”
- java制表符_Java地位无可动摇的12个原因
- JS字符串转换为JSON的四种方法笔记
- 解决自建ca认证后浏览器警告
- Xshell安装sql报错:······ RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#3a79bd29)
- python的类中包含什么_Python中的类(中)
- Leetcode 刷题笔记(二十七) ——动态规划篇之买股票问题(一)
- OC算法 输出手机号码归属地
- 倾斜摄影相机焦距与实景三维模型效果的关系
- 渲染算法学习(四)-- Environment Lighting
- 【CSDN英雄会】囯炬CEO张代浩:做写架构的人,做制定游戏规则的人
- asp.net报错:ConnectionString 属性尚未初始化
- python期末大作业-图形化爬虫
- 最齐全的教辅文具3dm犀牛模型素材,速来收藏
- 抢单开发系统php,开发抢单系统
- js时区时间转换格式:h5内转换含有T字母的8小时时区时间格式
- 别小看“Spring过滤器”,这些知识点你必须得掌握
热门文章
- 拾忆Elasticsearch03:SpringBoot整合 Elasticsearch
- 无功控制器电容投切方案整理
- 10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
- 字节跳动疯狂扩张:IPO前的最后一战
- 2022-2028年中国健康险行业市场发展现状及竞争格局预测报告
- amd服务器cpu皓龙性能,真六核性能有多强?AMD皓龙2435测试
- Hadoop服务启动出现Permission denied (publickey,password)
- 深入学习java源码之Math.max()与 Math.min()
- 首届“十大最具价值”智能安防创业项目遴选榜单丨Xtecher联合中投协权威发布...
- 如何高效迅速的进行CodeReview