ETL工具kettle的性能优化!
ETL工具kettle的性能优化!
性能调优在整个项目中尤为重要。对于初级开发人员往往都不知道如何对性能进行调优。其实性能调优主要分为两个方面:一方面是硬件方面的调优,一方面是软件方面的调优。本文章主要介绍Kettle方面的性能调优以及效率的提升。
一、Kettle组件调优
1. commit size
表输出的提交记录数量(默认1000),具体根据数量大小来修改。
修改前速度(7447/s):
修改后(7992/s):
2. 数据库连接调参
基于上层优化方案继续调优
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
添加参数后(20361/s):
3. Kettle并行
右击 “START组件” 勾选Run Next Entries in Parallel
选择I understand
最终图:
结果图(可以看到每秒的表输出量已经起飞~~~):
70W的数据仅用30S的时间就插入完成。
4. 根据输入、输出库修改配置参数
1、在输入表的数据库中添加如下参数配置:
// 增加读的操作
useServerPrepStmts:true
cachePrepStmts:true
// 读取缓存,设置过高消耗内存也会高
defaultFetchSize:10000
useCursorFetch:true
useCompression:true //压缩数据传入,与mysql服务端进行通信时采用zlib压缩
2、在输出表的数据库连接中添加如下参数配置:
defaultFetchSize:5000
// 提高写的操作
rewriteBatchedStatements:true
useServerPrepStmts:false
useCursorFetch:true
// 设置与mysql服务器通讯时压缩数据传入
useCompression:true
上面两种修改参数的方式都可以,而且修改完对kettle进行读写的速度影响也差不多,上面这两个都是修改的数据库的一些配置参数,进而提高速度
5. kettle开启多个线程操作
kettle支持多线程,对于操作慢的流程可以直接开启多线程并行执行,上面就是开启多线程的设置,我将两个java脚本都设置成10个线程执行一下就提高了运行速度
开启多个线程,要注意自己电脑的内存合理设置,否则电脑瞬间卡死,而且对于插入操作不能开启多线程插入,否则会插入重复数据
6. kettle修改spoon.bat的运行内存大小
上面说到了开启多线程,kettle其实也是在jvm内运行的,所以当设置的运行的jvm内存过小,但是开启多个线程占用内存过大,会直接导致卡死,执行不了,或是内存超出,此时可以修改spoon.bat的配置,修改完重启一下,修改的配置如下:
将之前的配置修改为:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx4096m" "-XX:MaxPermSize=4096m"
二、Kettle参数调优
- 调整JVM大小进行性能优化,修改Kettle定时任务中的Spoon脚本。
参数 | 描述 |
---|---|
-Xmx1024m | 设置JVM最大可用内存为1024M。 |
-Xms512m | 设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 |
-Xmn2g(JVM) | 设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 |
-Xss128(JVM) | 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 |
Spoon参数位置:if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=128m" |
三、 Kettle其他优化
- 尽量使用SQL语句、尽可能的不适用组件。
- Kettle是基于Java制作的,尽可能的用较大的内存来启动Kettle
- 尽可能的使用同一主机来进行ETL操作(本地-本地/服务器-服务器),本地-服务器传输网络波动会有一定的影响
- 使用数据库资源库便于对作业、转换的管理与应用。
- 尽可能的输入少量的数据集(没用的字段不抽取)
- 插入大量数据时把索引删掉,待数据全量插入完成后再进行创建索引。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论