Kettle
1. 安装kettle
2. Kettle功能说明
- Kettle操作
1. 安装kettle
1.1 JDK安装
将JDK文件解压,放到/home/zkpk目录下
cd /home/zkpk
unzip jdk1.6.0_45.zip
使用vi配置环境变量
vi /home/zkpk/.bash_profile
复制粘贴以下内容到上面vi打开的文件中
export JAVA_HOME=/home/zkpk/jdk1.6.0_45/
export JRE_HOME=/home/zkpk/jdk1.6.0_45/jre/
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
使改动生效命令:
source .bash_profile
测试配置:
java -version
如果出现下图信息,代表JDK安装成功:
1.2 kettle工具安装
打开此链接下载kettle
http://community.pentaho.com/projects/data-integration/
点击Download下载
将下载后的pdi-ce-5.1.0.0-752.zip复制到linux下
在/home/zkpk/kettle目录下解压:
cd /home/zkpk
mkdir kettle
cd kettle
unzip pdi-ce-5.1.0.0-752.zip
安装完成后,可以看到生成一个新的文件夹data-integration,则/home/zkpk/kettle/data-integration即是kettle的安装和执行目录。
赋予.sh执行权限:
chmod +x *.sh
运行.kitchen.sh
cd /home/zkpk/kettle/data-integration
./kitchen.sh
如果出现帮助信息,说明kettle安装部署成功。
启动kettle:
./spoon.sh
可弹出kettle操作界面:
弹出的帮助信息点击close:
紧接着可以看到kettle的使用界面:
2. Kettle功能说明
2.1 Kettel是什么?
Kettle也叫PDI,在2006年Kettle加入了来源的BI组织Pentaho,正式命名为PDI,英文全称为Pentaho Data Integeration。Kettle是“Kettle E.T.T.L.Environment”,只取首字母的缩写,这意味着它被设计用来实现ETL(Extract-Transform-Load)需要:抽取、转换、和加载数据;翻译成中文名称应该叫水壶,名字的起源正如该项目的主程序员MATT在一个论坛里说的那样:希望把各种数据放到一个壶里然后以一种指定的格式流出。
Spoon是一个图形用户界面,它允许你运行转换任务,其中转换是用Pan工具来运行,任务是用Kitchen来运行。Pan是一个数据转换引擎,它可以执行很多功能。例如:从不同的数据源读取\操作和写入数据。Kettle中有两种脚本文件,transformation和job,前者完成针对数据的基础转换,后者则完成整个工作流的控制。
2.2 Kettle支持的存储方式
2.2.1 Kettle支持的两种存储方式
Kettle有两种存储方式来描述任务:一种是资源库方式(数据库) ,一种是文件形式(XML) 。通常任务是在规定的时间间隔内用批处理的模式自动运行。
2.2.2 资源库方式
资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中。资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件夹名称。资源库有两种形式:
- Kettle database repository,即保存在各种常见的数据库资源库类型,用户通过用户名/密码来访问资源库中的资源,默认的用户名/密码是admin/admin和guest/guest。
二、Kettle file repository,保存在服务器硬盘文件夹内的资源库类型,此类型的资源库无需用户进行登录,直接进行操作
- Kettle操作
3.1从MySQL导出
3.1.1 从MySQL到本地文件
双击transformation,在input中、output中分别指定输入和输出格式:
指定输入:
点击new,连接数据库:
点击Test,测试连接,如若报错就执行以下步骤:
复制 mysql-connector-java-5.1.27-bin.jar到
/home/zkpk/kettle/data-integration/lib下
再点击Test,出现以下内容表示成功:
指定查询语句,确定输出内容:
点击OK:
点击Launh:
成功,导出数据如下图所示:
3.1.2 从MySQL到HDFS
双击transformation,在input中、output中分别指定输入和输出格式:
输入为input中的Table input,输出为Big Data中的Hadoop File Output
Table input的设置如上所示,hadoop file output的设置如下图:
点击Connect,如若报错就执行以下步骤:
复制/home/zkpk/hadoop/hadoop-core-1.2.1.jar到
/home/zkpk/kettle/data-integration/plugins/pentaho-big-data-plug
in/hadoop-configurations/hadoop-20/lib目录下,连接成功。
运行,点击Lunch,执行成功:
3.1.3 从MySQL到HBase
首先要在hbase shell中创建一个table,命名为sogou_kettle.
然后将/home/zkpk/hbase/hbase-0.94.21.jar和 /home/zkpk/hbase/lib/zookeeper-3.4.5.jar、protobuf-java-2.4.0a.jar复制/home/zkpk/kettle/data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/hadoop-20/lib/pmr下。
接下来双击transformation,在input中、output中分别指定输入和输出格式,输 入为input中的Table input,输出为Big Data中的HBase Output:
Table input的设置如上所示,HBase Output的设置如下图:
填写Zookeeper host为master的ip,Zookeeper port为:2181,然后点击左上角的Create/Edit mappings,如下图所示:
点击Get table names,在下拉列表中选择hbase中以创建好的table,点击Get incoming fields,修改uid的Key为Y,Type为String。在Mapping name中填写列族cf1.点击Save mapping.然后点击左上角的Configure:
点击Get table names就能得到如上图所示的table的列表,点击Get mappings for the specified table也能得到相应的列族,点击ok。点击运行。
HBase中运行结果:
3.2从HBase导出
3.2.1 从HBase到mysql
双击transformation,在input中、output中分别指定输入和输出格式,
输 入为Big Data中的HBase Input,输出为Output中的Table Output:
指定输入:
以上操作类似于从mysql导数据到hbase中的hbase输出,然后点击ok,指定输出:
在Target table一栏填写table的名字,然后点击右下角的SQL,从而在mysql中生成与HBase中表格的字段一致的table。
然后点击执行:
以上实验列举了四类数据的导入:
mysql--->本地、
mysql---->HDFS、
mysql---->HBase、
HBase---->mysql
除此之外的其他使用kettle在本地/MySQL、HDFS、HBase之间执行ETL的操作类似,再次将不一一指出。