2017-03-08 82 views
0

我正在將我的mapreduce作業作爲來自Oozie工作流程的java操作運行。 當我在Hadoop集羣上運行MapReduce的我的成功運行,但是當我運行使用相同的罐子從Oozie的工作流扔掉它是從Oozie工作流程運行的mapreduce中的HBase連接失敗

這是我的工作流的.xml

<workflow-app name="HBaseToFileDriver" xmlns="uri:oozie:workflow:0.1"> 

    <start to="mapReduceAction"/> 
     <action name="mapReduceAction"> 
       <java> 
         <job-tracker>${jobTracker}</job-tracker> 
         <name-node>${nameNode}</name-node> 
         <prepare> 
           <delete path="${outputDir}"/> 
         </prepare> 

         <configuration> 
           <property> 
             <name>mapred.mapper.new-api</name> 
             <value>true</value> 
           </property> 
           <property> 
             <name>mapred.reducer.new-api</name> 
             <value>true</value> 
           </property> 
           <property> 
             <name>oozie.libpath</name> 
             <value>${appPath}/lib</value> 
           </property> 
           <property> 
            <name>mapreduce.job.queuename</name> 
            <value>root.fricadev</value> 
           </property> 

          </configuration> 
           <main-class>com.thomsonretuers.hbase.HBaseToFileDriver</main-class> 

            <arg>fricadev:FinancialLineItem</arg> 


           <capture-output/> 
       </java> 
       <ok to="end"/> 
       <error to="killJob"/> 
     </action> 
     <kill name="killJob"> 
      <message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message> 
     </kill> 
    <end name="end" /> 
</workflow-app> 

下面是我的異常,當我請參閱YARN中的日誌。 儘管顯示爲成功,但輸出文件未生成。

+0

你有沒有嘗試檢查http://stackoverflow.com/questions/33829017/gssexception-no-valid-credentials-provided-mechanism-level-failed-to-find-any。 您是如何使用kutil生成密鑰表文件的? –

+0

@SUDARSHAN你從哪裏得到這個例外?它是Java動作異常的一部分嗎?你能延長日誌嗎? – Alex

+0

@DeepanRam是使用kutil。但不知道在oozie工作流dir中保留生成密鑰選項卡文件的位置。 – SUDARSHAN

回答

0

你有沒有考慮Oozie Java Action

IMPORTANT: In order for a Java action to succeed on a secure cluster, it must propagate the Hadoop delegation token like in the following code snippet (this is benign on non-secure clusters): 

// propagate delegation related props from launcher job to MR job 
if (System.getenv("HADOOP_TOKEN_FILE_LOCATION") != null) { 
    jobConf.set("mapreduce.job.credentials.binary", System.getenv("HADOOP_TOKEN_FILE_LOCATION")); 
} 

您必須從系統環境變量得到HADOOP_TOKEN_FILE_LOCATION並設置該屬性mapreduce.job.credentials.binary

HADOOP_TOKEN_FILE_LOCATION在運行時由oozie設置。

+0

和添加此後,我得到警告在地圖減少像屬性mapreduce.job.credentials.binary的值不能爲空 – SUDARSHAN

+0

這是我如何設置,但仍然得到相同的錯誤,如果(System.getenv(「HADOOP_TOKEN_FILE_LOCATION」) != null){hbaseConf.set(「mapreduce.job.credentials.binary」,System.getenv(「HADOOP_TOKEN_FILE_LOCATION」)); – SUDARSHAN

+0

也可以在hadoop2中工作 – SUDARSHAN