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 到頁面最下面的底端,如下圖:
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
下圖為鏈接打開的頁面的中間部分:
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 是不支持的意思 圖片下面也有解釋。
上圖說明的是對 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安裝文件里面做:
配置辦法參考:http://wiki.pentaho.com/display/BAD/Hadoop
進頁面之后 先點擊collapse 收縮所有的菜單樹 如上圖。 Configuring Pentaho for your Hadoop Distro and Version 意思是為hadoop 版本做配置 點擊進去:頁面的上面 就是上面說過的kettle對hadoop的支持情況。
我們到頁面的中間部分去,如下圖:
1 意思是 你想要連接的hadoop發行版 已經被kettle支持了,但是沒有內置插件,需要下載,這種情況最好 看下:Install Hadoop Distribution Shim
2 意思是你想連接的hadoop發行版 還有沒有被kettle支持,可以自己填寫相應的信息 要求pentaho 開發一個。
還有1種情況 就是上面說的hadoop發行版 已經被kettle支持了 且有內置的插件。
3 就是配置了。
3.1 stop application 就是如果kettle在運行 先停掉他。
3.2 打開安裝文件夾 我們這邊是kettle 所以就是spoon那個的文件路徑:
3.3 編輯 plugin.properties文件
3.4 改一個配置值 下圖畫圈的地方
改成 對應你hadoop的shim值 (上圖的表格里面的shim) 我這邊是cdh50:
改之后保存:
至此 配置工作做完。
2 然后開發腳本工作
下面開始開發腳本 官方參考:http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS
打開 kettle 運行spoon.bat
:
新建一個kjb文件 拖一個開始圖元
再拖一個
hadoop copy files即是 load數據到 hdfs里面。
copy files里面的配置:
意思是當前kjb腳本所在路徑 在我這邊文件夾是:
目標文件 是 hdfs://ip:hdfs端口/路徑
填之前可以點擊browse 按鈕 測試
如下圖 :填好server 和port后 點擊connect 如果沒有報錯 出現紅框里面的hdfs://......... 就說明連接成功了(如下圖)。
注意只要連接成功,說明kettle對hadoop的配置就沒有問題。
可以運行腳本試試了:
如上圖,腳本運行成功。
在hadoop home bin下面查看:
文件成功load.
至此,kettle load文本數據到hdfs成功!
4 備注:
所有的步驟都可以參考官網:
http://wiki.pentaho.com/display/BAD/Hadoop
上圖 1 是配置 2 是加載數據到hadoop 集群 3 是加載數據到hdfs 還有其他到 hive 到hbase等。