一、资源库
【1】数据库资源库
1、概述
数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用
2、使用
准备操作:在MySQL中创建数据库kettle
1)点击右上角connect,选择Other Resporitory
2) 选择Database Repository
3) 建立新连接,选择我们之前创建的数据库 kettle
4) 填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成
5) 连接资源库,默认账号密码为admin
6) 将之前做过的转换导入资源库
(1)选择从xml文件导入
(2)随便选择一个导入即可
7) 此时在C:\Users\你的windows用户名
的目录下生成了一个.kettle
文件夹,里面包含了一些Kettle资源库的配置信息
【2】文件资源库
将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样
创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨
平台使用比较麻烦
1)选择connect
2)点击add后点击Other Repositories
3)选择File Repository
4)填写信息
二、Kettle在Linux下的使用
前提:因为Kettle是纯Java编写,所以依赖JDK环境,使用前必须安装JDK
1)安装包上传到服务器,解压
注意:
- 1.把mysql驱动拷贝到lib目录下
- 2.将Windows本地用户家目录下的隐藏目录
C:\Users\你的windows用户名\.kettle
文件夹上传到linux的用户家目录下,我的是/home/zsy/
下
2)运行数据库资源库中的转换:
./pan.sh -rep=resources -user=admin -pass=admin -trans=mysql2file -dir=/
参数说明:
-rep 资源库名称
-user 资源库用户名
-pass 资源库密码
-trans 要启动的转换名称
-dir 目录(不要忘了前缀 /)
4)运行资源库里的作业:
记得把作业里的转换变成资源库中的资源
./kitchen.sh -rep=resources -user=admin -pass=admin -job=jobDemo1 -logfile=./logs/log.txt -dir=/
参数说明:
-rep - 资源库名
-user - 资源库用户名
-pass – 资源库密码
-job – job名
-dir – job路径
-logfile – 日志目录
三、调优
1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本
参数参考:
- -Xmx1024m:设置JVM最大可用内存为1024M
- -Xms512m:设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存
- -Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
- -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右
2、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000
3、尽量使用数据库连接池
4、尽量提高批处理的commit size
5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)
6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle
7、可以使用sql来做的一些操作尽量用sql ;Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用sql
8、插入大量数据的时候尽量把索引删掉
9、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert
10、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建
11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的)
12、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)
13、尽量不要用kettle的calculate计算步骤,能用数据库本身的sql就用sql ,不能用sql就尽量想办法用procedure,实在不行才是calculate步骤
14、要知道你的性能瓶颈在哪,可能有时候你使用了不恰当的方式,导致整个操作都变慢,观察kettle log生成的方式来了解你的ETL操作最慢的地方
15、远程数据库用文件+FTP的方式来传数据,文件要压缩。(只要不是局域网都可以认为是远程连接)
都看到这里了,点赞评论一下吧!!!
完结撒花!!!