指定Oozie Java节点的Hadoop属性

因为之前要写一个程序就是一个java节点可以搞定的事情,但是无奈需要配置一下Hadoop的属性值,mapreduce.task.classpath.user.precedence,结果没查了半天没想到怎么配置,没办法,当时只能写了一个mapreduce跑一个java程序。后来想了一下还是喽一眼源码吧,结果还真查到了,在启动javaAction的时候可以配置hadoop的属性

一路追踪,

从开始servlet到一直调用后端的

org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(Context context, WorkflowAction action);

在这个函数中的关键代码

--------------------------------------分割线 --------------------------------------

推荐阅读

Hadoop平台上Oozie调度系统的安装配置

Ubuntu 13.04上搭建Hadoop环境

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

Ubuntu下Hadoop环境的配置

单机版搭建Hadoop环境图文教程详解

搭建Hadoop环境(在Winodws环境下用虚拟机虚拟两个Ubuntu系统进行搭建)

--------------------------------------分割线 --------------------------------------

最后调用

runningJob =jobClient.submitJob(launcherJobConf);

在这个提交job的时候参数JobConf就是launcherJobConf

而launcherJobConf的生成是

JobConf launcherJobConf =createLauncherConf(context, action, actionXml, actionConf);

当这个在创建的时候会使用到workflow.xml的节点信息actionXMl

在createLauncherConf函数中会有个

setupLauncherConf(launcherConf, actionXml, appPathRoot, context);

上边这个函数中写着如何加入启动hadoop的一些参数

Configuration setupLauncherConf(Configuration conf, Element actionXml,Path appPath, Context context) throws ActionExecutorException {
      try {
          Namespace ns = actionXml.getNamespace();
          Element e = actionXml.getChild("configuration", ns);
          if (e != null) {
                String strConf =XmlUtils.prettyPrint(e).toString();
                XConfiguration inlineConf = newXConfiguration(new StringReader(strConf));
 
                XConfiguration launcherConf =new XConfiguration();
                for (Map.Entry<String,String> entry : inlineConf) {
                    if(entry.getKey().startsWith("oozie.launcher.")) {
                        String name =entry.getKey().substring("oozie.launcher.".length());
                        String value =entry.getValue();
                        // setting original KEY
                      launcherConf.set(entry.getKey(), value);
                        // setting un-prefixedkey (to allow Hadoop job config
                        // for the launcher job
                        launcherConf.set(name,value);
                    }
                }
                checkForDisallowedProps(launcherConf,"inline launcher configuration");
              XConfiguration.copy(launcherConf, conf);
          }
          return conf;
      }
      catch (IOException ex) {
          throw convertException(ex);
      }
    }

上边函数已经写着很明白了,当以oozie.launcher.开头的

Configuration节点中的属性,都会被加入到    Configuration中

这个时候只要在自己写的oozie节点中加入如下参数就ok了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ddb959c7006d2c8a3d059d62d690f630.html