目錄
Kettle可以與Hadoop協同工作。讓我們從簡單的開始,本文介紹如何配置Kettle訪問Hadoop集羣(HDFS、MapReduce、Zookeeper、Oozie等),以及Hive、Impala等數據庫組件。所有操作都以操作系統的root用戶執行。
一、環境說明
1. Hadoop
已經安裝好4個節點的CDH 6.3.1,IP地址及主機名如下:
172.16.1.124 manager
172.16.1.125 node1
172.16.1.126 node2
172.16.1.127 node3
啓動的Hadoop服務如圖1所示,所有服務都使用缺省端口。
2. Kettle
已經在172.16.1.105安裝好PDI 8.3,安裝目錄爲/root/data-integration。爲了用主機名訪問Hadoop相關服務,在Kettle主機的/etc/hosts文件中添加了如下內容:
172.16.1.124 manager
172.16.1.125 node1
172.16.1.126 node2
172.16.1.127 node3
二、連接Hadoop集羣
1. 在Kettle中配置Hadoop客戶端文件
(1)在瀏覽器中登錄Cloudera Manager,選擇hive服務,點擊“操作”->“下載客戶端配置”。得到如圖2的文件。
(2)將上一步得到的Hadoop客戶端配置文件複製到Kettle的~/data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/cdh61/目錄下,覆蓋原來自帶的core-site.xml、hdfs-site.xml、hive-site.xml、yarn-site.xml、mapred-site.xml 5個文件。
2. 啓動spoon
/root/data-integration/spoon.sh
3. 在spoon中選擇Hadoop種類
選擇主菜單“Tools” -> “Hadoop Distribution...”,在對話框中選擇“Cloudera CDH 6.1.0”,如圖3所示。
4. 重啓spoon
5. 在Spoon創建Hadoop clusters對象
(1)新建轉換
主菜單 File -> New -> Transformation
(2)新建Hadoop集羣對象
在工作區左側的樹的View標籤中,選擇 Hadoop clusters -> 右鍵New Cluster,對話框中輸入如圖4所示的屬性值。然後點擊“Test”按鈕,結果如圖5所示。除了Kafka因沒有在CDH中啓動服務導致連接失敗以外,其它均通過測試。最後點擊“OK”保存Hadoop集羣對象。
三、連接Hive
1. 新建數據庫連接對象
在工作區左側的樹的View標籤中,選擇 Database Connections -> 右鍵New,對話框中輸入如圖6所示的屬性值。
點擊“Test”按鈕,連接Hive成功如圖7所示。
然後點擊“OK”保存數據庫連接對象。
2. 共享數據庫連接對象
爲其它轉換或作業能夠使用數據庫連接對象,需要將它設置爲共享。選擇 Database Connections -> hive_cdh631 -> 右鍵Share,然後保存轉換。
四、連接Impala
1. 新建數據庫連接對象
在工作區左側的樹的View標籤中,選擇 Database Connections -> 右鍵New,對話框中輸入如圖8所示的屬性值。
點擊“Test”按鈕,連接Impala成功如圖9所示。
然後點擊“OK”保存數據庫連接對象。
2. 共享數據庫連接對象
爲其它轉換或作業能夠使用數據庫連接對象,需要將它設置爲共享。選擇 Database Connections -> impala_cdh631 -> 右鍵Share,然後保存轉換。
五、後續(建立MySQL數據庫連接)
爲了給後面創建的轉換或作業使用,我們再定義一個普通的mysql數據庫連接對象。
1. 拷貝MySQL驅動jar文件
這裏使用的是MySQL 5.6.14版本,需要將相應的驅動程序文件拷貝到Kettle安裝目錄的lib目錄下。
cp mysql-connector-java-5.1.38-bin.jar /root/data-integration/lib
之後重啓Spoon加載新增的驅動程序。
2. 新建數據庫連接對象
在工作區左側的樹的View標籤中,選擇 Database Connections -> 右鍵New,對話框中輸入如圖10所示的屬性值。
點擊“Test”按鈕,連接MySQL成功如圖11所示。
然後點擊“OK”保存數據庫連接對象。
3. 共享數據庫連接對象
爲其它轉換或作業能夠使用數據庫連接對象,需要將它設置爲共享。選擇 Database Connections -> mysql_node3 -> 右鍵Share,然後保存轉換。
至此已經創建了一個Hadoop集羣對象和三個數據庫連接對象,如圖12所示。
後面將在這些對象上進行一系列Kettle讀寫Hadoop組件的實驗。