全局变量HADOOP_USER_NAME oozie?

时间:2016-10-14 18:02:13

标签: hadoop oozie oozie-coordinator sqoop

有什么办法可以将HADOOP_USER_NAME声明为oozie工作流程中的全局变量?实际上,我为我的项目创建了几个shell操作,但为每个shell操作声明一个HADOOP_USER_NAME效率不高,这就是为什么我想知道全局变量是否可以在这个中发生场景,如果是这样,我该怎么办呢......

非常感谢您的帮助。

这是我使用

的代码
<workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5">
  <global>
        <configuration>
            <property>
                <name>HADOOP_USER_NAME</name>
                <value>*****</value>
            </property>
        </configuration>
  </global>
<start to="shell-a0a5"/>
<kill name="Kill">
    <message>Error [${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shell-a0a5">
    <shell xmlns="uri:oozie:shell-action:0.1">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <exec>script1.sh</exec>
        <file>script1.sh#script1.sh</file>
    </shell>
    <ok to="End"/>
    <error to="Kill"/>
</action>
<end name="End"/>

出于某种原因,我没有从HADOOP_USER_NAME获取价值,也许我做错了,我不得不将其写入shell文件中,因为导出HADOOP_USER_NAME = ****;

2 个答案:

答案 0 :(得分:1)

您可以在工作流的顶部添加全局标记,该标记充当该workflow.xml中操作的全局配置

<workflow-app xmlns="uri:oozie:workflow:0.4" name="wf-name">
<global>
<job-tracker>${job-tracker}</job-tracker>
<name-node>${namd-node}</name-node>
<job-xml>job1.xml</job-xml>
<configuration>
    <property>
        <name>mapred.job.queue.name</name>
        <value>${queueName}</value>
        <name>HADOOP_USER_NAME</name>
        <value>${username}</value>
    </property>
</configuration>

答案 1 :(得分:1)

您可以将<property>传递给运行 Java 实用程序的任何类型的Oozie操作,但不能传递给shell操作。

在您的具体情况下,您可以在每个 shell操作中本地声明<env-var>,并且您可以全局定义该变量的实际值...

  • 在工作流程的<parameter>部分
  • 或在提交时的配置文件中

    &lt; workflow-app name ='hello-wf'xmlns =“uri:oozie:workflow:0.4”&gt;

    &LT;参数&GT;
    &LT;性&gt;
    &LT;名称&gt;&hadoopUser LT; /名称&gt;
    &LT;值GT; biloute&LT; /值GT;
    &LT; /性&gt;
    &LT; /参数&GT;
    ...
    &lt; action name ='some-shell'&gt;
    &lt; shell xmlns =“uri:oozie:shell-action:0.1”&gt;&gt;
    &LT;作业跟踪器&GT; $ {的JobTracker}&LT; /作业跟踪器&GT;
    &LT;名称节点&GT; $ {名称节点}&LT; /名称节点&GT;
    &LT; EXEC&GT; script1.sh&LT; / EXEC&GT;
    &LT; ENV-VAR&GT; HADOOP_USER = NAME = $ {hadoopUser}&LT; / env的-VAR&GT;
    &LT;文件&gt; script1.sh#script1.sh&LT; /文件&gt;
    &LT; /壳&GT;
    &lt; ok to =“End”/&gt;
    &lt; error to =“Kill”/&gt;
    &LT; /作用&gt;
    ...