Oozie coordinated work


I have a requirement to run multiple mapreduce jobs based on different set of files that hit the same table. I was exploring Oozie but I am not aware of Oozie completely.

My requirement is like
1. To run jobs based on time bound (and/or) File bound.
2. If certain files are not available, then it should skip the step.
3. User should be able to configure what steps and what priority each step should be.

Can any one suggest if Oozie fits my requirements? If so, How can I accomplish?
If not, is there any free or commercial tool similiar to Visual Cron that we intend to replace to run map reduce and java based jobs?

Basically you want to run a oozie workflow for bunch MR jobs based on data availability at scheduled time of the day. You need to define Decision node for checking the data existence and mapreduce action for running the mapreduce job. You can define mail notification feature as well for job failure. You can find the detailed information here MapReduce Node, Decision Node, Oozie Actions Documentation. I have given a sample decision node and mapreduce node along with job.properties file. Here is the command to run the oozie workflow. You can schedule it as cron for running it daily at given time.

oozie job -config job.properties -D param1=value -run

<workflow-app xmlns="uri:oozie:workflow:0.4" name="${app_name}">

<start to="data1_check"/>

<decision name="data1_check">
        <case to="data1_job">${fs:exists(input-data)}</case>
        <default to="data2_check"/>

<action name='data1_job'>
    <ok to="data2_check"/>
    <error to="data2_check"/>
###Here we are going to data2_check decision node for both failure and success.
Because you want to run the next data job to run. You can stop the work flow by sending it to kill node failure.

###Your Last MR action will go to 'kill'  node for failure and 'end' node for success.
<kill name="fail">

<end name="end" />

Here is the job.properties file.

nameNode=hdfs://localhost:9000    # or use a remote-server url. eg: hdfs://abc.xyz.yahoo.com:8020
jobTracker=localhost:9001         # or use a remote-server url. eg: abc.xyz.yahoo.com:50300