Updated on 2022-11-18 GMT+08:00

Suggestions

The name of a node must reflect the functions of a node

Standard name:

<action name="copyData">
   <fs>
     <delete path='${nameNode}/user/result'/>
     <mkdir path='${nameNode}/user/result'/>
     <move source='${nameNode}/output-data/map-reduce'
           target='${nameNode}/user/result'/>
     <chmod path='${nameNode}/user/result'
            permissions='-rwxrw-rw-' dir-files='true'></chmod>
   </fs>
   <ok to="end"/>
   <error to="fail"/>
 </action> 

Non-standard name:

<action name="fsNode">
   <fs>
     <delete path='${nameNode}/user/result'/>
     <mkdir path='${nameNode}/user/result'/>
     <move source='${nameNode}/output-data/map-reduce'
           target='${nameNode}/user/result'/>
     <chmod path='${nameNode}/user/result'
            permissions='-rwxrw-rw-' dir-files='true'></chmod>
   </fs>
   <ok to="end"/>
   <error to="fail"/>
 </action>

Configure pre-cleanup operations under Prepare for a task involving data overwriting

Correct:

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1">
     ...
     <action name="myfirstHadoopJob">
         <map-reduce>
             <resource-manager>foo:8021</resource-manager>
             <name-node>bar:8020</name-node>
             <prepare> 
                <delete path="hdfs://foo:8020/usr/tucu/output-data"/>
             </prepare> 
            <job-xml>/myfirstjob.xml</job-xml>
             <configuration>
                 <property>
                     <name>mapred.input.dir</name>
                     <value>/usr/tucu/input-data</value>
                 </property>
                 <property>
                     <name>mapred.output.dir</name>
                     <value>/usr/tucu/input-data</value>
                 </property>
                 <property>
                     <name>mapred.reduce.tasks</name>
                     <value>${firstJobReducers}</value>
                 </property>
                 <property>
                     <name>oozie.action.external.stats.write</name>
                     <value>true</value>
                 </property>
             </configuration>
         </map-reduce>
         <ok to="myNextAction"/>
         <error to="errorCleanup"/>
     </action>
     ...
 </workflow-app>