您的位置:首页 > 运维架构 > Linux

Kettle安装部署及实例演示

2016-09-05 12:17 357 查看

Kettle安装部署及实例演示

本文档包括三部分内容:

1、Java 的安装部署

2、Kettle的安装部署
3、Kettle的开发实例演示

                                                                               Date:2013/12/14
                                                                                Author: LiPin

一、 Java安装部署

1.1 安装Java 

在网站http://www.java.com/zh_CN/下载适合的jre

//**有两种可选版本:rpm安装包,.gz自解压安装包

这里选择rpm格式安装,将安装包(jre-7u45-linux-i586.rpm)上传到root用户目录/home/java下。

//**在root下安装可为全用户提供java环境支持,也可根据实际情况为某一用户安装)



终端输入:rpm -ivh jre-7u45-linux-i586.rpm 开始安装



//**rpm命令安装的java默认安装路径是/usr/java/ jre1.7.0_45

1.2 配置java环境

修改文件/etc/profile:

进入profile,敲Ctrl +F到文件末尾,写入以下内容:

JAVA_HOME=/usr/java/jre1.7.0_45

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

▲其中JAVA_HOME是java的安装路径。

//**此处要注意环境变量的java路径是安装路径,不是java的执行路径;

Java路径查询:whereis java

Java执行路径查询:which java

保存退出!

在终端键入java,如果显示帮助信息,则表示java环境配置完成:



二、 Kettle安装部署

2.1 安装Kettle

在网站http://www.oschina.net/p/kettle/下载所需的kettle版本

进root用户将安装包(pdi-ce-5.0.1-stable.zip)上传到/opt/kettle目录下



因为要将kettle安装在用户telepow下(也可根据需求为所需用户安装),则需改变kettle文件的属主及属组:

chown -R telepow:telepow kettle

切换到telepow用户下,开始安装,因为kettle安装包格式为.zip,所以运行:

unzip pdi-ce-5.0.1-stable.zip

安装到当前目录。

安装完成后,可以看到生成一个新的文件夹data-integration,则/opt/kettle/data-integration既是kettle的安装和执行目录



进入该目录下,为所有.sh文件赋予执行权限:

chmod +x *.sh

然后在终端键入./kitchen.sh,如果出现帮助信息,说明kettle安装部署完成



三、 Kettle实例演示

Java和kettle安装部署完成之后,就可以使用kettle工具了!

下面将以实现定时从一台PC上的数据库中抽取数据到另一台PC数据库为例,讲解kettle的使用。

3.1 运行kettle

在kettle安装目录下运行:

./spoon.sh

即可弹出kettle操作界面。
//**此处注意,如果无法弹出kettle的运行界面,提示缺少图像插件的话,需要为linux的系统安装图形运行工具;

将图形工具安装包(libXp-1.0.0-8.1.el5.i386.rpm)上传到root下临时目录,安装:

rpm –ivh libXp-1.0.0-8.1.el5.i386.rpm



接着就是登陆界面



Kettle为用户提供两种存储用户编写的kettle脚本的方式:

一是kettle工具自身的资源库(相当于一个小型专属数据库);

二是不使用资源库,将脚本信息直接存储在自建目录中;

此处我们不使用资源库登陆,点击‘Cancel’

弹出的帮助信息点击‘Close’



紧接着就可以看到kettle的使用界面





3.2 任务信息说明


此演示工作涉及到的信息是:

PC01

IP:192.168.193.130

端口号:8000

数据库:sybase

用户数据库:dynamicdb

数据库用户:telepow

数据库用户密码:123456

任务表:SWITCHPOWDEV

PC02

IP:134.81.5.86

端口号:8000

数据库:sybase

用户数据库:dynamicdb

数据库用户:telepow

数据库用户密码:uo23hoS982_Ow_db

任务表:V_SWITCHPOWDEV

需要做的就是将PC02的视图表V_SWITCHPOWDEV中数据定时抽取到

PC01的表SWITCHPOWDEV之中

3.3 创建转换(Transformation)

3.3.1 新建Transformation

打开‘File’—‘New’---‘Transformation’

创建一个转换Transformation01



3.3.2 创建数据库连接

在转换视图窗口双击‘Database Connections’

为此转换建立一个数据库连接





Connection Name:建立的数据库连接名称--Get_86

Connection Type:连接的数据库类型—Sybase

Access:连接方式—JDBC

Host Name:连接主机的IP地址—134.81.5.86

Database Name:连接的用户数据库—dynamicdb

Port Number:数据库端口号—8000

User Nmae:数据库用户名—telepow

Password:数据库用户密码-- uo23hoS982_Ow_db

配置完成之后点击左下角‘Test’,测试数据库连接状态



出现截图信息,说明配置正确,数据库连接正常!

点解OK 保存退出!

3.3.3 创建转换关系

点击转换窗口的‘Design’,将‘Input’中的‘Table input’表输入图标拖入右侧窗口,然后再将‘Output’中的‘Insert/update’插入/更新图标拖入右侧窗口



按住‘Shift’键鼠标左击右侧窗口中的‘Table Input’图标,点住不放托至右侧‘Insert/Update’图标上,发现有一条带箭头的连接线将两个图标连接起来。



这样两个图标之间就建立了数据抽取与数据存储的关系

3.3.4 配置表输入信息

双击‘Table Input’图标,弹出表输入配置信息,为抽取PC02中的数据配置相关信息。



Step name:步骤名称--Table Input01

Connection:所属数据库连接—Get_86,即刚刚建立的连接PC02的数据库连接

SQL:需要对PC02中任务表做的操作—

SELECT * FROM dynamicdb..V_SWITCHPOWDEV

点击OK保存退出!

3.3.5 配置表插入/更新信息

同样双击‘Insert/Update’图标,弹出配置界面,为向PC01中插入数据配置相关信息



Step name:步骤名称--insert/Update01

Connection:所属数据库连接—Into_130,此处注意,因为要向PC01中插入数

据,所以点击‘Connection’右侧的‘New’新建按钮,创建新的数据库连接,此连接指向PC01



Target table:目标表—SWITCHPOWDEV,即是要把数据插入PC01中的这张表

Conmmit size:数据量限制—设置的数值最好大于每次需插入表中总的记录数

The Key(s) to look up the value(s):查询关键字—抽取PC02中V_SWITCHPOWDEV的数据时筛选所需关键字,点击右侧‘Get Files’获取所有字段,将多余字段删除

Update files:更新的字段—对PC01中SWITCHPOWDEV表需要更新的字段,点击右侧‘Get update files’获取所有字段

点击OK保存退出!

3.3.6 运行转换

转换信息配置完成之后,先对编写好的转换进行调试,验证有无Bug,点击菜单栏图标



弹出调试结果



可以看出没有错误,最后运行此连接,实现数据的抽取,点击菜单栏图标

弹出窗口,点击‘Lanuch’----‘Yes’进行保存



Name:保存的转换名称—Get_86to130

Browser for other folders:存储路径—/opt/kettle/ktllog,将转换保存在自己建立的路径中,方便后续查找调用

点击OK开始运行,下方会打印出动态日志,完成之后可以看到日志中的‘Finished’字样



至此一个转换已经建立完毕!

3.4 创建定时任务Job

转换完成之后,开始建立定时任务,已实现定时抽取数据的需求,定时任务有两种途径可以实现:

一是利用kettle自身的定时工具‘Start’;

二是利用linux中的crontab功能;

3.4.1 kettle自带的‘Star’定时功能

3.4.1.1 新建Job

打开‘File’—‘New’—‘Job’,新建一个任务Job



3.4.1.2 创建数据库连接

为任务Job创建一个数据库连接即指向PC01的连接,双击Job视图窗口的‘Database Connection’弹出配置界面



配置好之后,保存退出!

3.4.1.3 创建任务关系

打开任务设计窗口‘General’将‘START’和’Transformation’图标拖入右侧窗口,再将‘Scripting’中‘SQL’拖入右侧窗口,并将图标连接起来。



3.4.1.4 配置START信息

双击图标‘START’,弹出配置窗口



Repeat:重复—将此项勾选,表示按下面配置的周期重复

Type:周期类型—Weekly,按周重复

Time of day:时分设置—当天的17:10

Day of week:星期选择—Saturday,定在每周六执行

3.4.1.5 编写SQL语句

因为上述编写过的转换只能实现将PC02的数据抽取到PC01中(即将PC01与PC02中共有的数据更新和PC01中没有而PC02中有的数据插入PC01中),而不能实现保持PC01与PC02数据完全相同(即不能将PC02中已经没有的数据从PC01中删除),所以在执行转换前要编写个SQL语句,在插入PC02数据之前将PC01中的数据先清空,双击‘SQL’图标,弹出配置界面



Job entry name:SQL脚本的名称—SQL

Connection:所属数据库连接—locale,此处是要对PC01中的SWITCHPOWDEV表进行操作,所以选择locale连接

SQL:需执行的SQL语句-- DELETE FROM SWITCHPOWDEV

保存退出!

3.4.1.6 导入转换

双击‘Transformation’图标,将已经编写好的转换导入进来



Name of job entry:Job步骤名称—Transformation

Transformation filename:已编写转换的路径-- /opt/kettle/Get_86to130.ktr,通过点击右侧的 图标,选择转换

保存退出!

3.4.1.7 运行任务

点击菜单栏 执行Job,弹出窗口,点击‘Lanuch’



Name:保存Job的名称—Job01

Browse for other folders:保存Job的路径

Job开始运行,下方会打印动态日志,开始时会停在‘start’状态,因为此时还未到设置的周期时间



等时间来到周六的17:10,任务继续往下走



从日志可以看出本周的任务执行完毕,最后的‘start’状态表示进入下一个周期等待中…….

至此kettle自带的定时任务设置演示完成!

下面讲解通过linux的crontab实现定时的功能

3.4.2 Linux的crontab脚本定时

因为已经将需要的kettle脚本编写完毕,现在只需配置crontab所需信息,直接调用即可

3.4.2.1 创建sh脚本

以telepow用户进入目录/opt/kettle/ktlsh,编写Get_86.sh脚本,写入以下内容:

#!/bin/sh

ROOT_TOPDIR=/opt/kettle

export ROOT_TOPDIR

date >> $ROOT_TOPDIR/ktllog/log01

echo "-------------------------------------------------------" >> $ROOT_TOPDIR/ktllog/log01

JAVA_HOME=/usr/java/jre1.7.0_45

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

$ROOT_TOPDIR/data-integration/kitchen.sh -file=$ROOT_TOPDIR/ktllog/Job01.kjb >> $ROOT_TOPDIR/ktllog/log01

echo "-------------------------------------------------------" >> $ROOT_TOPDIR/ktllog/log01

$ROOT_TOPDIR/ktllog/log01为打印日志的存储位置

kitchen.sh -file=$ROOT_TOPDIR/ktllog/Job01.kjb为调用kettle自身的kitchen.sh命令执行任务Job01.kjb,此处的任务‘START’中不设置任何周期

JAVA_HOME=/usr/java/jre1.7.0_45 此处需要说明的是,虽然之前已经配置好了java环境,但是crontab命令不属于任何用户,调用kettle自身的kitchen.sh命令时,它依然找不到java环境,所以在调用时必须指定java环境,否则sh脚本无法运行

保存退出!

然后为Get_86.sh脚本赋予执行权限

Chmod +x Get_86.sh

3.4.2.2 设置crontab

在终端键入crontab –e,编写crontab



定在每周六的17:39执行脚本Get_86.sh

等时间来到周六的17:39,crontab 脚本运行,通过日志文件可以看到运行的过程



至此linux中crontab命令实现定时任务演示已完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Kettle linux 数据库