配置Oozie工作流程

时间:2020-02-23 14:33:26  来源:igfitidea点击:

作为工作流引擎,Oozie使我们可以以称为工作流的指定序列运行一组Hadoop应用程序。
我们可以通过三种方式之一配置Oozie工作流程,具体取决于特定情况。
我们可以使用

  • config-default.xml文件:定义不会为工作流程进行更改的参数。

  • Job.properties文件:定义了对工作流的特定部署常见的参数。这里的定义覆盖了Config-default.xml文件中制作的定义。

  • 命令行参数:定义对工作流调用特定的参数。这里的定义覆盖了作业中的那些.properties文件和config-default.xml文件。

配置详细信息会有所不同,具体取决于它们关联的操作。
例如,正如我们在下列列表中的MapReduce操作(Map-Action)中,我们可以其中配置更多东西:

<workflow-app name=" SampleWorkflow " xmlns="uri:oozie:workflow:0.1">
   ...
   <action name="firstJob">
      <map-reduce>
      @@1     <job-tracker>serverName:8021</job-tracker>
         <name-node>serverName:8020</name-node>
      @@2      <prepare>
            <delete path="hdfs://clientName:8020/usr/sample/output-data"
         </prepare>
      @@3     <job-xml>jobConfig.xml</job-xml>
         <configuration>
           ...
            <property>
               <name>mapreduce.map.class</name>
               <value>theitroad.oozie.FlightMilesMapper</value>
            </property>
            <property>
               <name>mapreduce.reduce.class</name>
               <value>theitroad.oozie.FlightMilesReducer </value>
            </property>
            <property>
               <name>mapred.mapoutput.key.class</name>
               <value>org.apache.hadoop.io.Text</value>
            </property>
            <property>
               <name>mapred.mapoutput.value.class</name>
               <value>org.apache.hadoop.io.IntWritable</value>
            </property>
            <property>
               <name>mapred.output.key.class</name>
               <value>org.apache.hadoop.io.Text</value>
            </property>
            <property>
               <name>mapred.output.value.class</name>
               <value>org.apache.hadoop.io.IntWritable</value>
            </property>
            <property>
               <name>mapred.input.dir</name>
               <value>'/usr/dirk/flightdata'</value>
            </property>
            <property>
               <name>mapred.output.dir</name>
               <value>'/usr/dirk/flightmiles'</value>
            </property>
            ...
         </configuration>
      </map-reduce>
      <ok to="end"
      <error to="end"
   </action>
   ...
</workflow-app>

与此处所示的文件系统(FS)操作相反:

<workflow-app name="SampleWorkflow" xmlns="uri:oozie:workflow:0.1">
    ...
    <action name="firstJob">
         <fs>
            <delete path="hdfs://servername:8020/usr/sample/temp-data"
            <mkdir path="archives/${wf:id()}"
            <move source="${jobInput}" target="archives/${wf:id()}/processed-input"
            <chmod path="${jobOutput}" permissions="-rwxrw-rw-" dir-files="true"><recursive</chmod>
        </fs>
        <ok to="end"
        <error to="end"
    </action>
    ...
</workflow-app>