一,介绍
Oozie是一个基于Hadoop的工作流调度器,它可以通过Oozie Client 以编程的形式提交不同类型的作业,如MapReduce作业和Spark作业给底层的计算平台(如 Cloudera Hadoop)执行。
Quartz是一个开源的调度软件,它为任务的调度执行提供了各种触发器以及监听器
下面使用Quartz + Oozie 将一个MapReduce程序提交给Cloudera Hadoop执行
二,调度思路
①为什么要用Quartz呢?主要是借助Quartz强大的触发器功能。它可以允许满足不同的调度需求,如每周执行作业一次、重复执行作业多少次。这里有一个重要的问题:假设我有一个作业需要重复执行,当第一次把该作业提交到CDH上执行后,以后需要执行该作业时不再是又一次把该作业上传到CDH上然后执行,而是把提交过的作业记录下来,下次需要运行时,直接让CDH再运行该作业。
②使用Quartz还有一个好处就是:在作业提交的时候可以做一些控制。比如,某种类型的作业提交的频率很高,或者运行时间较短(根据它上次执行完的情况来判断),那么下次运行它时,让它具有更高的优先级。
③使用Oozie的目的很明确,就是让它把作业发送给底层的计算平台,如CDH去执行作业。
三,Eclipse开发环境搭建
主要是需要Quartz和Oozie的依赖包。具体如下:
aaarticlea/png;base64,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" alt="" />
四,实现思路
a) 调度系统目前只考虑调度两种类型的作业:Mapreduce作业和Spark作业。先把这二种作业通过Quartz传递给Oozie,然后再让Oozie把作业提交给CDH计算平台去执行。
b) Quartz提供了一个公共的Job接口。里面只有一个execute()方法,该方法负责完成Quartz所调度的作业的具体功能:把作业传递给Oozie
c) 定义一个抽象类BaseJob,它里面定义了二个方法。这二个方法主要是用来做一些准备工作,即使用Quartz把作业传递给Oozie时需要找到作业在HDFS上的存储目录,并将之复制执行目录下。
d) 最后是两个具体的实现类,MRJob和SparkJob,它们分别代表Mapreduce作业和Spark作业。在实现类里面完成作业的配置,然后将作业提交到CDH计算平台上执行。
相关类图如下:
五,具体代码分析
MRJob.java
实现了org.quartz.Job接口的execute(),该方法当触发器被触发时,会自动地被Quartz Schedule 调度执行。这样,就可以根据需要定义触发器,控制作业何时提交给Oozie。
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try{
String jobId = wc.run(conf);
System.out.println("Workflow job submitted");//submit job to oozie and get the jobId //wait until the workflow job finishes
while(wc.getJobInfo(jobId).getStatus() == Status.RUNNING){
System.out.println("Workflow job running...");
try{
Thread.sleep(10*1000);
}catch(InterruptedException e){e.printStackTrace();}
}
System.out.println("Workflow job completed!");
System.out.println(wc.getJobId(jobId));
}catch(OozieClientException e){e.printStackTrace();}
}
测试的main函数程序如下:可以看出对于客户端而言,只需要按照编写常规的Quartz作业方式,就可以调试MapReduce作业了。要想运行该程序,当然还得提前准备到作业的运行环境。具体参考
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger; import java.util.Date; import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.quartz.job.MRJob; public class QuartzOozieJobTest {
public static void main(String[] args) throws Exception{
QuartzOozieJobTest test = new QuartzOozieJobTest();
test.run();
} public void run() throws Exception{
Logger log = LoggerFactory.getLogger(QuartzOozieJobTest.class); log.info("------- Initializing ----------------------"); SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler(); long startTime = System.currentTimeMillis() + 20000L;
Date startTriggerTime = new Date(startTime); JobDetail jobDetail = newJob(MRJob.class).withIdentity("job", "group1").build();
SimpleTrigger trigger = (SimpleTrigger) newTrigger().withIdentity("trigger", "group1").startAt(startTriggerTime).build(); Date ft = sched.scheduleJob(jobDetail, trigger); log.info(jobDetail.getKey() + " will submit at " + ft + " only once."); sched.start();
// sched.shutdown(true);
}
}