1 Kettle安装与基本概念



1.1 安装介绍

测试完之后发现6.0版本最稳定。本文采用的版本为pdi-ce-6.0.1.0-386.zip。

(1)    Windows

首先,安装JDK,一般支持1.6以上版本。然后360解压,运行Soop.bat文件即可。

(2)    Linux

首先,安装JDK,然后,使用unzip命令解压,执行Kitchen.sh即可。



1.2 基本概念

Kettle包括三大块:

Spoon——转换/工作(transform/job)设计工具 (GUI方式)

Kitchen——工作(job)执行器 (命令行方式)

Span——转换(trasform)执行器 (命令行方式)

Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle的ETL操作主要由以下六个部分构成:

(1)资源库:固定存储已建立好的连接、转换或作业的数据库。

(2)数据库连接:用户自定义的,在转换或作业中使用的数据库连接。

(3)转换(Transform):数据抽取、转换、加载流程的封装。

(4)作业(Job):将多个转换或一些任务封装,用于ETL任务的执行。

(5)步骤(steps):转换或作业的组成。

(6)节点连接(Hup):连接转换步骤或者连接Job(实际上就是执行顺序)的连线。



2 基本操作步骤



2.1 浏览和管理资源库

点击Spoon.bat打开kettle即会弹出如图2.1所示界面,点击 kettle怎么安装mysql驱动 kettle工具安装_kettle怎么安装mysql驱动 编辑已有的资源库连接;点击kettle怎么安装mysql驱动 kettle工具安装_大数据_02新增资源库连接。需新建号数据库连接、编辑名称和描述。

kettle怎么安装mysql驱动 kettle工具安装_mysql_03

图2.1 资源库新建与编辑

最后点击“创建或更新”即可。用户名和密码默认为“admin”。资源库的作用是将制作好的.ktr和.kjb文件都存放到配置好的数据库中。如图2.2所示。

kettle怎么安装mysql驱动 kettle工具安装_mysql_04

图2.2 资源库的登录

点击“工具”-“资源库”-“探索资源库”可浏览保存在资源库里的文件。如图2.3所示。

kettle怎么安装mysql驱动 kettle工具安装_数据库_05

图2.3 探索资源库



2.2 新增数据库连接

在新建数据库连接之前,需将对应的数据库连接的驱动放到kettle的安装目录的pdi-ce-6.0.1.0-386\data-intergration\lib文件夹下。然后,点击新建图标kettle怎么安装mysql驱动 kettle工具安装_数据库_06,点击下拉框里面的“数据库连接”,选择mysql数据库类型,可新增数据库链接。如图2.4所示。

kettle怎么安装mysql驱动 kettle工具安装_mysql_07

图2.4 数据库连接

访问方法:推荐使用JDBC。

连接名称:用户自定义。

服务器主机:填写数据库服务器IP地址。

数据库名称:填写数据库名称。



2.3 Hive连接

在创建hive数据库连接之前,需要将安装的hive的lib目录下的hive-common-*.jar文件放到kettle的安装目录pdi-ce-6.0.1.0-386\data-integration\lib下面。然后,启动远程服务开启hiveserver2 &。最后,点击新建图标kettle怎么安装mysql驱动 kettle工具安装_kettle怎么安装mysql驱动_08,点击下拉框里面的“数据库连接”,选择HadoopHive2数据库类型,可新增数据库链接。



2.4 Hdfs连接

     在创建Hadoop cluster连接之前,需要将集群的配置文档core-site.xml、mapred-site.xml、hdfs-site.xml复制到kettle安装目录的pdi-ce-6.0.1.0-386\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\cdh54下替换掉原有的文件。然后,修改此目录下的config.properties文件,在文件结尾加一行authentication.superuser.provider=NO_AUTH。最后,修改pdi-ce-6.0.1.0-386\data-integration\plugins\pentaho-big-data-plugin目录下的plugin.properties文件,修改active.hadoop.configuration=cdh54(改为自己安装的hadoop版本),等号右侧为hadoopcluster的版本型号。

     点击“核心对象树”下的“hadoopcluster”新建连接。如图2.5所示。

kettle怎么安装mysql驱动 kettle工具安装_java_09

图2.5 hadoop连接



2.5 新增作业和转换

点击kettle怎么安装mysql驱动 kettle工具安装_kettle怎么安装mysql驱动_10,在弹出的下拉框中点击“作业”或“转换”来新建它们,左侧“主对象树”中详细显示了对应功能所包含的步骤,“核心对象”包含了可添加的对象步骤。



2.6 远程部署kettle

在后续的测试工作中发现,当本地的kettle去操作hdfs的时候会报错:could close the output stream for file “hdfs://….”。原因是本地和云服务器不在同一个网段。考虑到云服务器没有图形界面,采取在主节点部署kettle,然后开启远程服务,本地的ETL采用远程执行的方式操作。

a.  linux安装kettle,并开启远程服务。

将安装包上传到主节点,然后用unzip命令解压,后续配置工作同上。

b.  开启远程服务。

配置data-integration/pwd/carte-config-*.xml文件。修改里面master和slaver的端口号,因为默认的8080端口与spark冲突。并将所有localhost更改为内网IP:xxxxx。用户名密码默都为cluster。

执行data-integration/carte.sh xxxxx:xxx启动远程服务。如图2.6所示。

kettle怎么安装mysql驱动 kettle工具安装_java_11

图2.6 启动kettle远程服务

c.  配置远程服务

找到“主对象树”-“子服务器”,右击新建,过程如下图2.7所示。

kettle怎么安装mysql驱动 kettle工具安装_java_12

图2.7 配置kettle远程服务器

d.  任务提交

当本地的etl文件写好之后,点击kettle怎么安装mysql驱动 kettle工具安装_大数据_13执行,在弹出的运行窗口中选择,“远程执行”,并选择上一步配置好的远程服务器。如下图2.8所示:

kettle怎么安装mysql驱动 kettle工具安装_mysql_14

图2.8 提交远程作业并执行

e.  登录web端查看kettle远程服务状态

在浏览器登录http://xxxxx:xxxx用默认的用户名/密码cluster登录。

kettle怎么安装mysql驱动 kettle工具安装_大数据_15

图2.9  Kettle服务器登录

kettle怎么安装mysql驱动 kettle工具安装_数据库_16

图2. 10 kettle远程服务状态



2.7 调度kitchen.bat参数,写定时更新任务kettle

为了实现ETL任务自动化的定时执行,windows采用任务计划+.bat脚本的方式实现对增量数据的定时抽取的开发。

Kitchen—作业执行器,它是一个作业执行引擎,用来执行作业。这是一个命令行执行工具, 参数说明如下

-rep:Repositoryname 任务包所在存储名
-user:Repositoryusername 执行人
-pass:Repositorypassword 执行人密码
-job:Thenameofthejobtolaunch 任务包名称
-dir:Thedirectory(don'tforgettheleading/or\)
 -file:Thefilename(JobXML)tolaunch
-level:Thelogginglevel(Basic,Detailed,Debug,Rowlevel,Error,Nothing)指定日志级别
-log:Theloggingfiletowriteto 指定日志文件
-listdir:Listthedirectoriesintherepository 列出指定存储中的目录结构。
-listjobs:Listthejobsinthespecifieddirectory 列出指定目录下的所有任务
-listrep:Listthedefinedrepositories 列出所有的存储
-norep:Don'tlogintotherepository 不写日志

本文的脚本里面采用的命令为Kitchen.bat /rep root /user admin /pass admin /job 作业名,具体定时任务开发见3.3.3节。