1 引言:

项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中

2 准备工作:

1 首先

要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url:

http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version

打开这个url 到页面最下面的底端,如下图:

kettle连接hadoop&hdfs图文详解-LMLPHP

archive 下面的from PDI 4.3 、 from PDI 4.4 、 from PDI 5.0 即表示支持hadoop的pdi 版本。pdi即pentaho data integration 又称kettle。PDI 4.3 、  PDI 4.4 、 PDI 5.0 即是kettle 4.3 、4.4、 5.0 ,这个版本号 包括比其更高的版本(即kettle 5.0.X ,5.1,5.2也支持hadoop)。

2 其次

不同的kettle版本支持的hadoop版本不一样,以5.1为例子,下面的链接是5.1的支持情况

http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version

下图为链接打开的页面的中间部分:

kettle连接hadoop&hdfs图文详解-LMLPHP

determine the proper shim for hadoop Distro and version 大概意思是 为hadoop版本选择合适的套件。表格上面的一行:apache、cloudera、hortonworks、intel、mapr指的是发行方。点击他们来选择你 想连接的hadoop的发行方 。上图 以apache hadoop为例:

Version 指版hadoop版本号 ,shim 指kettle提供给该hadoop套件的名称,Download 里面的 included in 5.0,5.1 指kettle的5.0、5.1版本安装包里面已经有内置的插件,一句话来讲 就是kettle5.1及5.0版本已有插件提供支持apache hadoop版本0.20.x  。不需要额外下载。NS 是不支持的意思 图片下面也有解释。

kettle连接hadoop&hdfs图文详解-LMLPHP

上图说明的是对 cloudera的 hadoop支持的情况 ,Download 里面 download的蓝色字体超链接的说明 是要除了下kettle的安装包外另外下载的 ,带 included in 5.0,5.1 说明 kettle 5.0,5.1版本的本身就支持(内置有插件)。

 

由上面两图得到的结论是 kettle 5.1 支持 apache hadoop 0.20.x版本 及cloudera hadoop CDH4.0 到CDH5。

3  试验运行:

1 首先配置工作

当前我用的hadoop 版本是hadoop-2.2.0-cdh5.0 所以用kettle 5.1 且其内置有hadoop插件。去kettle官网下载: kettle连接hadoop&hdfs图文详解-LMLPHP

解压之后 就是:

kettle连接hadoop&hdfs图文详解-LMLPHP

下载好之后,现在就需要做配置的工作了,配置的工作在kettle安装文件里面做:

配置办法参考:http://wiki.pentaho.com/display/BAD/Hadoop

kettle连接hadoop&hdfs图文详解-LMLPHP

进页面之后 先点击collapse 收缩所有的菜单树 如上图。  Configuring Pentaho for your Hadoop Distro and Version 意思是为hadoop 版本做配置 点击进去:页面的上面 就是上面说过的kettle对hadoop的支持情况。

我们到页面的中间部分去,如下图:

kettle连接hadoop&hdfs图文详解-LMLPHP

1 意思是 你想要连接的hadoop发行版 已经被kettle支持了,但是没有内置插件,需要下载,这种情况最好 看下:Install Hadoop Distribution Shim

2 意思是你想连接的hadoop发行版 还有没有被kettle支持,可以自己填写相应的信息 要求pentaho 开发一个。

还有1种情况 就是上面说的hadoop发行版 已经被kettle支持了 且有内置的插件。

3 就是配置了。

3.1 stop application 就是如果kettle在运行 先停掉他。

3.2 打开安装文件夹 我们这边是kettle 所以就是spoon那个的文件路径:

kettle连接hadoop&hdfs图文详解-LMLPHP

3.3 编辑 plugin.properties文件

3.4 改一个配置值 下图画圈的地方

kettle连接hadoop&hdfs图文详解-LMLPHP

改成 对应你hadoop的shim值 (上图的表格里面的shim) 我这边是cdh50:

kettle连接hadoop&hdfs图文详解-LMLPHP

改之后保存:

kettle连接hadoop&hdfs图文详解-LMLPHP

至此 配置工作做完。

2 然后开发脚本工作

下面开始开发脚本 官方参考:http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS

打开 kettle 运行spoon.bat

:kettle连接hadoop&hdfs图文详解-LMLPHP

新建一个kjb文件 拖一个开始图元

kettle连接hadoop&hdfs图文详解-LMLPHP

再拖一个kettle连接hadoop&hdfs图文详解-LMLPHP

hadoop copy files即是 load数据到 hdfs里面。

copy files里面的配置:

kettle连接hadoop&hdfs图文详解-LMLPHP

kettle连接hadoop&hdfs图文详解-LMLPHP 意思是当前kjb脚本所在路径 在我这边文件夹是:

kettle连接hadoop&hdfs图文详解-LMLPHP

目标文件 是 hdfs://ip:hdfs端口/路径

填之前可以点击kettle连接hadoop&hdfs图文详解-LMLPHPbrowse 按钮 测试

如下图 :填好server 和port后  点击connect 如果没有报错 出现红框里面的hdfs://......... 就说明连接成功了(如下图)。

kettle连接hadoop&hdfs图文详解-LMLPHP

注意只要连接成功,说明kettle对hadoop的配置就没有问题。

可以运行脚本试试了:

kettle连接hadoop&hdfs图文详解-LMLPHP

如上图,脚本运行成功。

在hadoop home bin下面查看:

kettle连接hadoop&hdfs图文详解-LMLPHP文件成功load.

至此,kettle load文本数据到hdfs成功!

4 备注:

所有的步骤都可以参考官网:

http://wiki.pentaho.com/display/BAD/Hadoop

kettle连接hadoop&hdfs图文详解-LMLPHP

上图 1 是配置 2 是加载数据到hadoop 集群 3 是加载数据到hdfs 还有其他到 hive 到hbase等。

04-30 21:02