作者:Syn良子 出處:http://www.cnblogs.com/cssdongl 歡迎轉載
最近把之前寫的Hadoop MapReduce程序又總結了下,發現很多邏輯基本都是大致相同的,於是想到能不能利用ETL工具來進行配置相關邏輯來實現MapReduce代碼自動生成並執行,這樣可以簡化現有以及之后的一部分工作.於是選取了上手容易並對Hadoop支持的比較成熟的Pentaho Kettle來測試,把一些配置過程和遇到的坑記錄下來.
Kettle可以在官網下載到,但是官網會讓你注冊才能下載而且速度不穩定,所以推薦在這個鏈接進行下載,各個版本都有,我用的是PDI(Pentaho Data Integration)6.1,需要連接的集群是Hadoop2.6.0-CDH5.4.0.
進入鏈接里的6.1文件夾直接下載pdi-ce-6.1.0.1-196.zip解壓,進入data-integration根目錄啟動Spoon.bat,等待kettle啟動成功.
一.准備工作
在配置PDI連接Bigdata source之前,需要檢查下需要連接的source版本和對應的Pentaho的組件是否兼容,如下圖
可以看到,之前下載的PDI(上表中屬於PDI Spoon),基本上是支持連接CDH,MapR,EMR,HDP等主流數據源的.我連接的集群是CDH5.4,也在支持范圍內.
二.配置Pentaho組件Shims
Shims這里我的理解是Pentaho提供的一系列連接各個source的適配器,具體配置位置根據Pentaho的組件來決定,現在的PDI Spoon的配置位置在../data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations 下,注意這個地方要配置好對應數據源的shims,如下圖有好幾種數據源,
比如我當前連接的是CDH5.4.0,那么我先清空cdh55下的內容,隨后下載對應的shims來解壓拷貝到該目錄下,具體shims下載位置在
https://sourceforge.net/projects/pentaho/files/Big%20Data%20Shims
選擇相應的PDI版本進入,下載對應的CDH版本的shims,我需要下載的是 pentaho-hadoop-shims-cdh54-package-61.2016.04.01-196-dist.zip,打開該zip,雙擊install.bat進行shims解壓,將解壓后的cdh54目錄下的內容全部拷貝到hadoop-configurations下的默認的cdh55文件下里面去(其實cdh55這個應該可以改名為cdh54,但是修改完這個文件夾名稱的話,PDI找不到該配置了,應該可以在哪兒設置,暫時沒找到,找到的同學可以告訴我).
這個地方一定要下載好對應的shims,否則PDI中即使你配置好正確的CDH連接信息,那么隨后在使用過程中也會報各種莫名其妙的錯誤.
三.編輯Cluster配置文件
完成上一步內容后,進入cdh55目錄下,將CDH5.4集群上的hive-site.xml,mapred-site.xml,hbase-site.xml,core-site.xml,hdfs-site.xml,yarn-site.xml等配置文件拷貝到當前目錄覆蓋.然后進行一些必要的修改.如下
修改hive-site.xml,將hive的metastore修改為和集群保持一致
<property> <name>hive.metastore.uris</name> <value>修改為集群的thrift地址</value> </property>
修改mapred-site.xm,如沒有則添加並和集群保持一致
<property> <name>mapreduce.jobhistory.address</name> <value>修改為集群的jobhistory地址</value> </property> <property> <name>mapreduce.app-submission.cross-platform</name> <value>true</value> </property>
修改yarn-site.xml對應屬性值,如沒有則添加並和集群保持一致
<property> <name>yarn.application.classpath</name> <value>$HADOOP_CLIENT_CONF_DIR,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>clouderamanager.cdh5.test</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>clouderamanager.cdh5.test:8032</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>clouderamanager.cdh5.test:8033</value> </property>
修改config.properties添加如下屬性,注意我這里CDH5.4測試用,沒有開啟Kerberos認證
authentication.superuser.provider=NO_AUTH
如果開啟了Kerberos認證,則需要修改更多參數.
四.新建Cluster連接並測試
完成上述配置后,啟動Spoon.bat, 進入PDI開發界面.菜單欄中選擇Tools->Hadoop Distribution,然后選擇Cloudera CDH5.4並點擊ok,然后重啟PDI.
在左邊的View視圖下會看到Hadoop clusters然后右鍵新建Cluster,如下圖
配置好對應的集群連接信息(可以參考shims下集群的*.xml配置文件),點擊"Test"進行測試,如下
確保所有的結果都變為綠色則表示配置成功,如果有紅色肯定是連接信息和集群不一致.