關於PDI與HDP24對接問題解決

準備工做:java

    PDI工具下載地址:http://community.pentaho.com/   6.1.0.1-169版本linux

    與PDI對接的HDP24環境依賴包 https://github.com/pentaho/pentaho-hadoop-shims/tree/hdp24-61.2016.05.00-R   下載後僅對hdp24版本編譯,若是你是用的是其餘hadoop發行版,能夠進行對應編譯。git

     hdp24編譯後目錄結構。github

     

    編譯過程當中須要注意兩個問題:apache

     (1) 源碼根目錄下 common-shims-build.xml文件中,javac標籤下須要添加javac執行路徑executable="C:/Program Files/Java/jdk1.7.0_79/bin/javac", 不然會報無效的發行版本錯誤。windows

     (2) hdp24目錄下  ivy.xml文件中排除掉隊jetty的依賴,不然編譯時候會報錯終止,由於jetty依賴在倉庫中沒法找到。<exclude org="org.mortbay.jetty" module="jetty"/>
    <exclude org="org.mortbay.jetty" module="jetty-util"/>app

 

一 使用PDI提交Spark任務。工具

    PDI對spark任務提交,我認爲就是簡單的爲spark-submit提供了界面化的操做。也就是對於spark任務的的支持,僅支持到jar包源碼級別,而不支持源碼內部流程定義。oop

    那麼使用起來就很簡單了,可是使用pdi提交spark任務後,任務是提交成功了,可是任務運行失敗了,查找spark任務日誌。大數據

    因爲classpath中 含有未解析的${hdp.version}變量,因此報bad substitution。這種異常形成緣由是在執行java應用的時候,java的option中沒有指定hdp.version這個變量。所以想到的方法就是在spark提交任務的時候爲java option添加上這個變量的值。解決方法是在spark-defaults.conf文件中加入如下兩行:

spark.driver.extraJavaOptions=-Dhdp.version=2.4.0.0-169
spark.executor.extraJavaOptions=-Dhdp.version=2.4.0.0-169

    得解!

二 使用PDI提交MR任務。

    PDI提供了MR流程定義,也就是對MR的支持不是到源碼級別,而是能夠支持到M/R的流程自定義,而且會自動生成MRjob提交到大數據平臺,這是至關靈活的。可是在提交PDI提供的word_count任務後,任務是提交成功了,可是任務執行老是報錯:

   緣由就是:

  Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster

    根據緣由分析應該是類路徑問題,但是對比了類路徑又以爲沒問題,

    這個問題一直持續了兩天,毫無頭緒,最終感謝這篇博客 , http://qq85609655.iteye.com/blog/2193911  抱着試試看的態度竟然在百度搜索到了你。!

      那麼致使以上問題的緣由就是 windows/linux對類路徑的分隔符是不一致的。

     解決方案就是在mapred-site.xml中添加

  1. <property>  
  2.   <name>mapreduce.app-submission.cross-platform</name>  
  3.   <value>true</value>  
  4. </property>  

       問題完美解決!

相關文章
相關標籤/搜索