Kettle开源ETL平台安装配置及使用说明v11.docx
《Kettle开源ETL平台安装配置及使用说明v11.docx》由会员分享,可在线阅读,更多相关《Kettle开源ETL平台安装配置及使用说明v11.docx(56页珍藏版)》请在冰点文库上搜索。
Kettle开源ETL平台安装配置及使用说明v11
[]初稿
[]发布
[√]修订
编撰:
肖渺
编撰日期:
****-**-**
保密级别:
公开
文档版本:
KETTLE开源ETL软件】
【安装配置与使用说明】
2015年09月
修订记录
版本
修订者
修正日期
修正内容
审核人
审核日期
批准人
批准日期
肖渺
2015-09
初稿
肖渺
2015-10
增加Hadoop
Plugin相关配
置对应章节
肖渺
2015-11
增加章节
肖渺
2015-12
增加MapReduce
开发部分章节
修订记录2
1.安装与配置4
1.1ETL与KETTLE概述4
1.2KETTLE的下载与安装7
1.2.1Windows下安装配置Kettle8
1.2.2Linux下安装配置Kettle10
1.2.3Kettle下安装JDBC数据库驱动15
1.2.4下配置资源库连接15
1.2.5Kettle下HadoopPlugin插件配置17
2.KETTLE组件介绍与使用19
2.1KETTLESPOON使用19
2.1.1组件树介绍20
2.1.2使用示例123
2.1.3使用示例237
2.1.4使用Kettle装载数据到HDFS48
2.1.5使用Kettle装载数据到Hive52
2.1.6使用Kettle进行hadoop的mapreduce图形化开发52
2.2KETTLEPAN的使用63
2.3KETTLEKITECHEN的使用64
2.4CARTE添加新的ETL执行引擎65
2.5ENCR加密工具68
1.安装与配置
2015年下半年公司承接了江苏电信电子渠道中心数据分析项目,项目实现计划使用
大数据应用与分析相关的开源组件与技术来实现;针对数据的抽取与清理,需要使用ETL
工具;针对不同的数据源的数据整合需求,考虑到项目投资与开发成本,项目组初步计
划采用开源ETL工具;ETL(Extract,Transformation,Load)工具是构建数据仓库、
进行数据整合工作所必须使用的工具。
目前市面有多种商业ETL工具,如Informatica
PowerCenter,IBMDatastage等。
目前市场上开源且实用的ETL工具比较少,Kettle就
是为数不多的优秀开源ETL工具之一。
经过比较与分析,选择了Kettle作为本项目使
用的ETL工具。
1.1ETL与Kettle概述
ETL(Extract、Transform、Load,抽取、转换、装载),它是BI项目中最常见、基
础的数据加工行为。
构建数据仓库期间,各类业务系统的数据需要经过严格的ETL过程,
才能够进入到数据仓库中,进而为后续的数据展现、分析提供支撑。
通常,由于企业的
各业务系统数据口径不一致,比如不同应用存储性别的方式存在差异性、银行应用中不
同币种的统一、零售应用中商品计价方式的统一等,使得BI项目必须实施ETL工作,否
则在含糊、不准确的数据上进行各种数据行为是徒劳的、没有意义的。
在另外一些场合,企业往往需要对TB级别的数据进行各种数据聚合、粗和精加工。
比如,在制作即席报表期间,用户希望这些报表的运行时间越短越好,然而如果报表使
用到的数据粒度很细、数据量很大,则要控制好报表的运行时间估计够呛。
此时,我们
往往需要对数据进行各种层次的聚合操作,比如可以将“日”级别存储的数据预先聚合
成按周、月、季度的数据。
将来,运行报表的时间将得到有效控制,毕竟RDBMS能够更
快速响应客户提交的SQL请求。
设计并运行良好的ETL过程可以很好地完成上述任务。
Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix
等不同的操作系统平台上运行,数据抽取高效稳定。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形
化的用户环境来描述用户想做什么,而不是用户想怎么做。
在KettleETL解决方案中,主要存在两种ETL工件:
转换(Transformation)和作
业(Job)。
ETL转换,专注于数据加工本身,比如装卸数操作、数据编码转换;ETL作业,
专注于流程控制,比如执行若干ETL转换、将加工后的文件借助SSH2传输出去等。
通常,
ETL作业会包含若干ETL转换,并控制它们的执行,而且作业会以一定周期执行,比如每
周二执行、每隔3小时执行等。
Kettle家族目前包括4个产品:
SPOO、NPAN、CART、EKITCHEN。
SPOON允许你通过图形界面来设计ETL转换过程(Transformation)。
PAN允许你批量运行由Spoon设计的ETL转换(例如使用一个时间调度器)。
Pan是
一个后台执行的程序,没有图形界面。
CARTE类似于Pentaho管理控制台,它们都宿主在JettyWeb容器中,但各自承担
的使命不同。
Carte用于远程执行KettleETL转换和作业。
KITCHEN允许你批量使用由Chef设计的任务(例如使用一个时间调度器)。
KITCHEN
也是一个后台运行的程序。
Kettle基于EclipseRCP框架开发,针对运行环境只需要GUI图形用户界面和以上
的JVM环境支持即可,Kettle程序运行时典型demo显示截图如下:
在上面SPOON程序中可以使用图元的形式完成用户自定义的transformation,通过
transformation完成针对数据的基础转换,Demo如下截图所示:
可以从Kettle运行时日志,查看该transformation转换有没有finished、每个步
骤的耗时、速度、平均每秒多少行、总共插入了多少记录数等。
1.2Kettle的下载与安装
截止到2015年11月,Kettle(PentahoDataIntegration)软件的最新版本号为
0-353。
新版本的Kettle软件被改名为PentahoDataIntegration(PDI),作为商业开
源BI套件PentahoBIEE中默认的ETL工具,可以在Pentaho官方站点下载其最新的版
本。
官方网站上Kettle软件的下载链接会重定向到开源下载站点,如下图所示:
图Kettle
的下载
上述版本Kettle软件的DownloadURL下载链接为:
http/ftp下载工具下载;Linux下可以使用wget/curl等命令行方式
1.2.1Windows下安装配置Kettle
1、检查JDK或者以上版本JDK环境已经完成安装。
如果没有安装,需要从Oracle
JDK二进制软件包并完成安装,并配置好JAVA_HOME,
欢迎界面如下图所示:
CLASSPAT等相关环境变量。
H
2、将下载完成的版本Kettle软件ZIP包解压缩到Windows下任意目录,例如
D:
\Kettle
3、运行Kettle,在Windows下定位到$KETTLE_HOM批处理程序,双击运行E/
启动后,SpoonIDE的界面Demo截图如下:
1.2.2Linux下安装配置Kettle
1、安装JDK,版本要在及以上,建议安装JDK
在Oracle官网上下载JDK二进制安装包,并安装
rpm:
rpm-ivh
bin:
chmod+x
./
tar:
tarzxvf
配置环境变量:
#vi/etc/profile
编辑加入以下内容
#setjavaJDK
JAVA_HOME=/usr/local/
JRE_HOME=/usr/local/
PATH=$PATH:
$JAVA_HOME/bin:
$JRE_HOME/bin
CLASSPATH=$JAVA_HOME/lib/:
$JAVA_HOME/lib/
exportJAVA_HOME
exportJRE_HOME
exportPATH
exportCLASSPATH
变更环境变量,检查安装是否成功:
#source/etc/profile
java-version
2、安装配置Kettle:
下载kettle并在服务器上解压
赋予sh执行权限
chmod+x*.sh
运行
./home/kettle/
显示图片中的内容即提示Kettle程序在Linux下安装成功。
执行,会报如下错误
Linux下需要安装图形化界面工具,RHEL/CentOS下需要安装gnome和GTK并启动X11服
务:
#startx;并在Windows客户端PC上安装连接工具:
;如果Linux端操作系统发
行版为Ubuntu,可以执行以下步骤使用Windows自带的远程桌面程序基于RDP协议访问
Linux的XWindow的GUI图形界面环境:
#sudoapt-getinstallxrdp
#sudoapt-getinstallvnc4server
#sudoapt-getinstallxubuntu-desktop
#echo"xfce4-session">~/.xsession
#sudoservicexrdprestart
Windows下“运行”输入"mstsc"-->回车-->输入Ubuntu主机的IP地址-->
连接"
>回车
选择"sesman-Xvnc"-->输入"用户名和密码"-
这时候可能会提示如下错误:
这时需要执行如下命令
vi~/.kettle/.spoonrc
输入以下文字:
ShowWelcomePageOnStartup=N
保存,同时修改./kettle/.spoonrc文件中的该参数。
./kettle/.spoonrc此文件夹和文件是隐藏的。
通过ls-a可以看到。
最后在运行./就可以正常打开kettle的图形界面了。
在LinuxX11环境下运行Kettle的主程序Spoon的主窗口MainWindow界面截图如下:
1.2.3Kettle下安装JDBC数据库驱动
Kettle默认不带Oracle驱动,此时在运行时无法使用JDBC连接数据库;这个时
候需要下载包;解压缩后将jdbc目录下数据库JDBC驱动对应的jar文件拷贝
$KETTLE_HOME\data-integration\lib目录下,问题即可解决。
上述Kettle可以使用的稳定版本的JDBC驱动jar包ZIP文件的下载URL地址为:
1.2.4下配置资源库连接
默认时,KettleETL转换和作业直接用文件保存,这显然不适合团队模式开发。
如
果考虑将这些文件存放到SVN或其它SCM配置工具中,则也是一种选择。
或者,Kettle
允许用户将ETL转换和作业存储到其它位置,比如RDBMS中。
为了用数据库取代文件系统存储ETL转换和作业,用户需要在启动SpoonIDE时创
建一新的资源库。
在创建资源库前,用户要提供一个RDBMS(常用Oracle或者MySQ)L
数据库连接用户,比如kettle/kettle。
然后,创建好相应的数据库连接(比如kettle),
再并给出资源库的名称,比如kettle-repos。
最后,用户需要单击下图中给出的“创建
或更新”按钮,并完成资源库的创建工作。
此时,Spoon会在RDBMS的kettle/kettle
用户中自动创建metadata元数据库表,它们用来存储ETL转换和作业。
随后,用户可以以admin/admin帐号登录到kettle-repos资源库中,并启动Spoon
IDE,进而完成各种ETL转换和作业的开发工作。
下图展示了kettle-repos资源库中持有的数据库表集合:
插件配置
1.2.5Kettle下HadoopPlugin
Kettle以上的版本开始支持以Hadoop为核心的大数据技术,除了支持原生的
ApacheHadoop之外,Kettle(PDI)并支持来自多个供应商的不同的Hadoop发行版包括
Cloudera,Hortonworks和MapR。
为了支持不同的版本,PDI使用了称之为shim的抽象
层来连接不同的Hadoop发行版。
Shim是一个库文件用来解析API调用和重定向和处理
API调用,或者修改调用参数。
定期地,随着厂商发布新版本的Hadoop发行版,Pentaho
发布新的shim来实现支持。
这些大数据相关的shim由Pentaho的工程师进行测试和验
证。
用户可以通过访问Pentaho官网Wiki上的URL确认不同的Kettle版本针对不同的Hadoop
发行版的shim支持情况,URL为:
在Kettle中配置HadoopDistribution发行版的shim
流程如下:
1、确认需要连接的Hadoop发行版已被当前使用的Kettle版本所支持了;如果已经支持
但下载的PDI-CE-*.zip安装包中没有内置插件,则需要下载,可以参考以下:
Install
HadoopDistributionShim
2、如果开发者需要连接的Hadoop发行版还有没有被Kettle所支持,可以自己填写相
应的信息,要求Pentaho官方开发一个。
还有1种情况就是上面说的Hadoop发行版已经被Kettle所支持了,并包含内置的插
件。
3、配置流程
如果Kettle软件实例正在运行,则首先停止Kettle实例;
打开Kettle安装的文件夹,定位到
data-integration\plugins\pentaho-big-data-plugin路径:
编辑文件
修改配置项active-hadoop-configuration
修改为开发者需要连接的Hadoop发行版对应的shim值(上图的表格里面的shim),例
至此,Kettle中Hadoop插件相关配置工作完成。
2.KETTLE组件介绍与使用
2.1KettleSPOON使用
Spoon作为Kettle软件的IDE集成开发环境,提供了资源库的方式来整合所有的工作;
1)创建一个新的transformation,点击保存到本地路径,例如保存到D:
\etltest下,
保存文件名为Trans,kettle默认transformation文件保存后后缀名为ktr;
2)创建一个新的job,点击保存到本地路径,例如保存到D:
\tltest下,保存文件名为
Job,kettle默认job文件保存后后缀名为kjb;
2.1.1组件树介绍
2.1.1.1Transformation
Transformation的主对象树和核心对象分别如下图:
Transformation中的节点介绍如下:
MainTree:
菜单列出的是一个transformation中基本的属性,可以通过各个节点来查
看。
DB连接:
显示当前transformation中的数据库连接,每一个transformation的数据库
连接都需要单独配置。
Steps:
一个transformation中应用到的环节列表Hops:
一个transformation中应用到的节点连接列表
核心对象菜单列出的是transformation中可以调用的环节列表,可以通过鼠标拖动的方
式对环节进行添加:
Input:
输入环节Output:
输出环节
Lookup:
查询环节
Transform:
转化环节
Joins:
连接环节
Scripting:
脚本环节
2.1.1.2Job
Job的主对象树和核心对象分别如下图
MainTree菜单列出的是一个Job中基本的属性,可以通过各个节点来查看。
DB连接:
显示当前Job中的数据库连接,每一个Job的数据库连接都需要单独配置。
Jobentries/作业项目:
一个Job中引用的环节列表
核心对象菜单列出的是Job中可以调用的环节列表,可以通过鼠标拖动的方式对环节进
行添加。
每一个环节可以通过鼠标拖动来将环节添加到主窗口中。
并可通过shift+鼠标拖动,实现环节之间的连接。
2.1.2使用示例1
2.1.2.1建立转换
选中列表中的的“数据源”、“表输出”、“插入/更新”,拖拽到右侧工作区。
鼠标选中
节点键盘按shift键,拖拽即可连线。
下图是一个转换,有两个动作,一是直接从数据
源表同步数据到目标表,一是检查源表的插入和更新,同步到目标表。
黑色线为生效,灰色线为失效,节点和连接可双击进行编辑。
双击编辑表输出动作。
要获取的字段设置如下所示:
点击“Enterfieldmapping/输入字段映射”进行字段选择。
选择要用的字段后点确定,注意字段的约束条件。
编辑好后点击上面的执行即可。
左侧参数暂不说明,执行完成后可以观看下方的日志。
双击编辑“插入/更新”动作。
然后点击运行。
执行前,在源库里加条新纪录。
确定作业执行正常后可以保存作业,如保存路径到本
地磁盘地址C:
\
2.1.2.2建立执行的JOB/作业
建立JOB的前提是有可以完整执行的作业,上面步骤定制的作业进行保存。
从左侧列表拖拽“START”,“Success”,“转换”,“发送邮件”到工作区并连接,如下图。
然后双击“START”动作进行编辑。
然后双击编辑“Transformation”活动。
转换文件名选择上一步编辑好的.ktr文件
双击发送邮件,参数设置如下:
编辑完成后直接点击运行即可。
运行后查看日志。
2.1.3使用示例2
本例是完成读取目录下的.log文件,找出其中包含错误代码的行,并统计个数
2.1.3.1新建Transformation
本示例所用到的步骤和组件如下图所示:
连接图如下所示:
a)获取文件名设置如下:
其中已选择的文件名称的变量都需要手写输入,
可以点击显示文件名和预览记录检查是否配置正
确。
b)
文本文件输入设置如下:
文本文件输入选项中选择从上一步骤获取文件名,其中在输入里的字段被当作文件名一栏输入
uri,步骤读取的文件名来自填写获取文件名2
内容选项卡的设置如下:
文件类型选择CSV,分隔符自己定义,格式为mixed,编码方式选择UTF-8
字段选项可设置如下:
需要手写输入str名称,设置类型为String
c)获取字符串设置如下:
d)测试脚本设置如下
其中可以点击获取变量和测试脚本来测试脚本的正确性
点击测试脚本界面如下:
脚本代码由JavaScript编写
e)聚合记录
聚合记录就是将上一步的结果进行聚合,这里的名称字段是点击获取字段获取的,而不是自己输入的,newname一列是制定新名字,可以自己输入填写,
f)文本文件输出
文本文件的输出设置如下,
其中字段属性的设置名称字段是点击获取字段自动获取的,不是输入的,设置如下
g)运行日志显示如下:
2.1.3.2建立Job
Job的建立与中方法一样,用到的组件如下所示
转换组件设置如下:
将上一步保存的*.ktr添加到转换名文件路径中
点击运行按钮
生成日志如下所示:
2.1.4使用Kettle装载数据到HDFS
概述:
Kettle从以上版本开始支持大数据技术(在JOB和TRANSFORM面板中均新增了ER
BigData相关的组件)。
以下是使用Kettle访问HDFS的示