Kettle的安装及简单使用

一、kettle概述

1、什么是kettle

Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

2、Kettle工程存储方式

(1)以XML形式存储

(2)以资源库方式存储(数据库资源库和文件资源库)

3、Kettle的两种设计

4、Kettle的组成

5、kettle特点


二、kettle安装部署和使用

Windows下安装

(1)概述

在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行

(2)安装步骤

1、安装jdk

2、下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

3、双击Spoon.bat,启动图形化界面工具,就可以直接使用了

案例1:MySQL to MySQL

把stu1的数据按id同步到stu2,stu2有相同id则更新数据

1、在mysql中创建testkettle数据库,并创建两张表

create database testkettle;

use testkettle;

create table stu1(id int,name varchar(20),age int);

create table stu2(id int,name varchar(20));

2、往两张表中插入一些数据

insert into stu1 values(1001,'zhangsan',20),(1002,'lisi',18), (1003,'wangwu',23);

insert into stu2 values(1001,'wukong');

3、把pdi-ce-8.2.0.0-342.zip文件拷贝到win环境中指定文件目录,解压后双击Spoon.bat,启动图形化界面工具,就可以使用了

主界面:

在kettle中新建转换--->输入--->表输入-->表输入双击

在data-integration\lib文件下添加mysql驱动

在数据库连接栏目点击新建,填入mysql相关配置,并测试连接

建立连接后,选择刚刚建好的连接,填入SQL,并预览数据:

以上说明stu1的数据输入ok的,现在我们需要把输入stu1的数据同步到stu2输出的数据

注意:拖出来的线条必须是深灰色才关联成功,若是浅灰色表示关联失败

转换之前,需要做保存

执行成功之后,可以在mysql查看,stu2的数据

mysql> select * from stu2;
+------+----------+
| id | name |
+------+----------+
| 1001 | zhangsan |
| 1002 | lisi |
| 1003 | wangwu |
+------+----------+
3 rows in set (0.00 sec)

案例2:使用作业执行上述转换,并且额外在表stu2中添加一条数据

1、新建一个作业

2、按图示拉取组件

3、双击Start编辑Start

4、双击转换,选择案例1保存的文件

5、在mysql的stu1中插入一条数据,并将stu2中id=1001的name改为wukong

mysql> insert into stu1 values(1004,'stu1',22);
Query OK, 1 row affected (0.01 sec) mysql> update stu2 set name = 'wukong' where id = 1001;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

6、双击SQL脚本编辑

7、加上Dummy,如图所示:

8、保存并执行

9、在mysql数据库查看stu2表的数据

mysql> select * from stu2;
+------+----------+
| id | name |
+------+----------+
| 1001 | zhangsan |
| 1002 | lisi |
| 1003 | wangwu |
| 1004 | stu1 |
| 1005 | kettle |
+------+----------+
5 rows in set (0.00 sec)

案例3:将hive表的数据输出到hdfs

1、因为涉及到hive和hbase(后续案例)的读写,需要修改相关配置文件

修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

2、启动hadoop集群、hiveserver2服务

3、进入hive shell,创建kettle数据库,并创建dept、emp表

create database kettle;

use kettle;

CREATE TABLE dept(
deptno int,
dname string,
loc string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm int,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

4、插入数据

insert into dept values(10,'accounting','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');

insert into emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),(7499,'ALLEN','SALESMAN',7698,'1980-12-17',1600,300,30),(7521,'WARD','SALESMAN',7698,'1980-12-17',1250,500,30),(7566,'JONES','MANAGER',7839,'1980-12-17',2975,NULL,20);

5、按下图建立流程图

  • 表输入

  • 表输入2

  • 排序记录

  • 记录集连接

  • 字段选择


  • 文本文件输出


6、保存并运行查看hdfs

  • 运行

  • 查看HDFS文件


案例4:读取hdfs文件并将sal大于1000的数据保存到hbase中

1、在HBase中创建一张people表

hbase(main):004:0> create 'people','info'

2、按下图建立流程图

  • 文本文件输入


  • 设置过滤记录

  • 设置HBase output

    编辑hadoop连接,并配置zookeeper地址


  • 执行转换

  • 查看hbase people表的数据

    scan 'people'

    注意:若报错没有权限往hdfs写文件,在Spoon.bat中第119行添加参数

    "-DHADOOP_USER_NAME=root" "-Dfile.encoding=UTF-8"


三、创建资源库

1、数据库资源库

数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,方便跨平台使用

  • 在MySQL中创建kettle数据库

    mysql> create database kettle;
    Query OK, 1 row affected (0.01 sec)
  • 点击右上角connect,选择Other Resporitory

  • 选择Database Repository

  • 建立新连接



  • 填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成

  • 连接资源库

    默认账号密码为admin

  • 将之前做过的转换导入资源库

    • 选择从xml文件导入

    • 点击保存,选择存储位置及文件名

    • 查看MySQL中kettle库中的R_TRANSFORMATION表,观察转换是否保存

2、文件资源库

将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样

创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨

平台使用比较麻烦

  • 选择connect

  • 点击add后点击Other Repositories

  • 选择File Repository

  • 填写信息


四、 Linux下安装使用

1、单机

  • jdk安装

  • 安装包上传到服务器,并解压

    注意:

    1. 把mysql驱动拷贝到lib目录下

    2. 将windows本地用户家目录下的隐藏目录C:\Users\自己用户名\.kettle 目录,

      整个上传到linux的用户的家目录下,root用户的家目录为/root/

  • 运行数据库资源库中的转换:

    cd /usr/local/soft/data-integration
    ./pan.sh -rep=my_repo -user=admin -pass=admin -trans=tran1

    参数说明:

    ​ -rep 资源库名称

    ​ -user 资源库用户名

    ​ -pass 资源库密码

    ​ -trans 要启动的转换名称

    ​ -dir 目录(不要忘了前缀 /)(如果是以ktr文件运行时,需要指定ktr文件的路径)

  • 运行资源库里的作业:

    记得把作业里的转换变成资源库中的资源

    记得把作业也变成资源库中的资源

    cd /usr/local/soft/data-integration
    mkdir logs
    ./kitchen.sh -rep=my_repo -user=admin -pass=admin -job=job1 -logfile=./logs/log.txt

    参数说明:

    -rep - 资源库名

    -user - 资源库用户名

    -pass – 资源库密码

    -job – job名

    -dir – job路径(当直接运行kjb文件的时候需要指定)

    -logfile – 日志目录

2、 集群模式

  • 准备三台服务器

    master作为Kettle主服务器,服务器端口号为8080,

    node1和node2作为两个子服务器,端口号分别为8081和8082。

  • 安装部署jdk

  • hadoop完全分布式环境搭建

  • 上传并解压kettle的安装包至/usr/local/soft/目录下

  • 进到/usr/local/soft/data-integration/pwd目录,修改配置文件

    • 修改主服务器配置文件carte-config-master-8080.xml

      <slaveserver>
      <name>master</name>
      <hostname>master</hostname>
      <port>8080</port>
      <master>Y</master>
      <username>cluster</username>
      <password>cluster</password>
      </slaveserver>
    • 修改从服务器配置文件carte-config-8081.xml

      <masters>
      <slaveserver>
      <name>master</name>
      <hostname>master</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
      </slaveserver>
      </masters>
      <report_to_masters>Y</report_to_masters>
      <slaveserver>
      <name>slave1</name>
      <hostname>node1</hostname>
      <port>8081</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>N</master>
      </slaveserver>
    • 修改从配置文件carte-config-8082.xml

      <masters>
      <slaveserver>
      <name>master</name>
      <hostname>master</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
      </slaveserver>
      </masters>
      <report_to_masters>Y</report_to_masters>
      <slaveserver>
      <name>slave2</name>
      <hostname>node2</hostname>
      <port>8082</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>N</master>
      </slaveserver>
  • 分发整个kettle的安装目录,通过scp命令

  • 分发/root/.kettle目录到node1、node2

  • 启动相关进程,在master,node1,node2上分别执行

[root@master]# ./carte.sh master 8080
[root@node1]# ./carte.sh node1 8081
[root@node2]# ./carte.sh node2 8082
  • 访问web页面

http://master:8080


案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上

注意:因为涉及到hive和hbase的读写,需要修改相关配置文件。

修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

  • 创建转换,编辑步骤,填好相关配置

    直接使用trans1

  • 创建子服务器,填写相关配置,跟集群上的配置相同



  • 创建集群schema,选中上一步的几个服务器

  • 对于要在集群上执行的步骤,右键选择集群,选中上一步创建的集群schema

  • 创建Run Configuration,选择集群模式

  • 直接运行,选择集群模式运行


五、调优

1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。

参数参考:

-Xmx2048m:设置JVM最大可用内存为2048M。

-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-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步骤)。

Kettle的安装及简单使用的更多相关文章

  1. (转)python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  2. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)

    一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...

  3. python requests的安装与简单运用

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...

  4. memcache的windows下的安装和简单使用

    原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...

  5. 【RabbitMQ】RabbitMQ在Windows的安装和简单的使用

    版本说明 使用当前版本:3.5.4 安装与启动 在官网上下载其Server二进制安装包,在Windows上的安装时简单的,与一般软件没什么区别. 安装前会提示你,还需要安装Erlang,并打开下载页面 ...

  6. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  7. libmemcached安装及简单例子

    libmemcached安装及简单例子 1.下载安装libmemcached  $ wget http://launchpad.net/libmemcached/1.0/0.44/+download/ ...

  8. [hadoop系列]Pig的安装和简单演示样例

    inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...

  9. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

随机推荐

  1. vue 引用高德地图

    vue 引用地图之傻瓜式教程(复制粘贴即可用) npm 下载 npm install vue-amap --save main.js 代码 import AMap from 'vue-amap'; V ...

  2. Win10 安装WSL2与 Linux子系统

    Win10安装Linux子系统 1. 正常情况 步骤1 - 启用 Windows Linux版本子系统(Windows Subsystem for Linux) dism.exe /online /e ...

  3. Vue 2.0 与 Vue 3.0 响应式原理比较

    Vue 2.0 的响应式是基于Object.defineProperty实现的 当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 prop ...

  4. Xilinx约束学习笔记(三)—— 时序概念

    3. 时序概念 发现对于时序基础的介绍这一块,Intel 的文档竟然要比 Xilinx 的详细,因此引用了很多 Intel 的文档内容. 3.1 术语 发送沿(launch edge),指用来发送数据 ...

  5. Git 初识和使用

    目录 目录 目录 概念 工作区/暂存区/版本库 master 版本号 常见命令 环境搭建 Linux 下 Git 和 GitHub 环境的搭建 Git 本地操作 本地仓库的创建和使用 查看信息 查看状 ...

  6. CodeForce-799C Fountains (记忆化DP)

    Fountains CodeForces - 799C 某土豪想要造两座喷泉.现在有 n 个造喷泉的方案,我们已知每个方案的价格以及美观度.有两种合法的货币:金币和钻石.这两种货币之间不能以任何方式转 ...

  7. 在树莓派用C#+Winform实现传感器监测

    最近学校里发了个任务,说要做一个科技节小发明,然后我就掏出我的树莓派准备大干一场. 调料 Raspberry Pi 3B+ 树莓派GPIO扩展板 3.5寸电容触摸屏(GPIO接口) 土壤湿度传感器(G ...

  8. 免费iApp后台-云接口

    免费稳定,UI易懂简洁,功能强大 应用名称:云接口 应用版本:1.5.9 应用大小:3.55 MB 适用平台:Android(安卓) 应用用处:详情请下载软件 软件安全无毒 更新内容: 1.支付宝当面 ...

  9. 【PHP数据结构】图的应用:最短路径

    上篇文章的最小生成树有没有意犹未尽的感觉呀?不知道大家掌握得怎么样,是不是搞清楚了普里姆和克鲁斯卡尔这两种算法的原理了呢?面试的时候如果你写不出,至少得说出个大概来吧,当然,如果你是要考研的学生,那就 ...

  10. pycharm 增删改查 mysql数据库

    1.pycharm创建mysql数据表######################################################import pymysql# 创建连接con = p ...