ETL工具kettle的性能优化!

ETL工具kettle的性能优化!

 

性能调优在整个项目中尤为重要。对于初级开发人员往往都不知道如何对性能进行调优。其实性能调优主要分为两个方面:一方面是硬件方面的调优,一方面是软件方面的调优。本文章主要介绍Kettle方面的性能调优以及效率的提升。

 

一、Kettle组件调优

 

1. commit size

 

表输出的提交记录数量(默认1000),具体根据数量大小来修改。

006fRELkly4hvu4o6jx1fj30iy0a7mxn

修改前速度(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参数调优

 

 

  1. 调整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其他优化

 

  1. 尽量使用SQL语句、尽可能的不适用组件。
  2. Kettle是基于Java制作的,尽可能的用较大的内存来启动Kettle
  3. 尽可能的使用同一主机来进行ETL操作(本地-本地/服务器-服务器),本地-服务器传输网络波动会有一定的影响
  4. 使用数据库资源库便于对作业、转换的管理与应用。
  5. 尽可能的输入少量的数据集(没用的字段不抽取)
  6. 插入大量数据时把索引删掉,待数据全量插入完成后再进行创建索引。

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

 

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>