2017-03-08 81 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