Oozie 01-概览

  • Oozie是一个管理Apache Hadoop作业(job)的工作流(workflow)调度系统
  • Oozie工作流作业(workflow job)是由多个动作(action)构成的有向无环图(Directed Acyclic Grahp,DAG)
  • Oozie协调器作业(coordinator job)是由时间或数据可用触发的周期性Oozie工作流作业
  • Oozie整合了Hadoop栈的其余部分,可支持独立性的Hadoop作业(比如Java map-reduce,streaming map-reduce,Pig,Hive,Sqoop,Distcp),同时也支持系统相关性的作业(比如java程序和shell脚本)

Apache Hadoop工作流引擎

  • Oozie v1是一个基于工作流引擎的服务器,专用于运行工作流作业中的action。这些action又是用来执行Hadoop Map/Reduce和Pig作业的
  • Oozie v2是一个基于协调器引擎的服务器,专用于运行通过时间或数据触发的工作流。它能连续不断的运行定时(比如每小时一次)或数据可用时(等到工作流输入数据出现为止)的工作流
  • Oozie v3是一个基于束引擎(bundle engine)的服务器。束提供了一个较高层级的oozie抽象。该抽象用于批处理一个协调器应用集(a set of coordinator applications)。用户可在束层级“启动/停止/暂停/恢复/重运行”一个协调器作业集合,从而实现更好和更容易的操作控制。

Oozie工作流概览

Oozie是一个基于工作流引擎的服务器,专用于运行包含了Hadoop Map/Reduce和Pig作业的工作流。
Oozie是一个运行在Java servlet容器中的Java Web应用。
一个工作流是一些存在依赖关系action的有向无环图。从一个action到另一个action的依赖控制意味着,只有第一个action完成,第二个action才能开始运行。
Oozie工作流定义是通过hPDL(hadoop Process Definition Language)来描述的。
Oozie工作流action在远端系统(比如Hadoop,Pig)上启动作业。一旦action完成,远端系统回调Oozie通知action的执行完成,在该点Oozie得以继续处理工作流中的下一个action。
Oozie工作流包含控制流(control flow)节点和action节点。
控制流节点定义了工作流的开始和结束(比如start,end,fail节点),同时提供控制工作流执行路径的机制(比如decision,fork,join节点)。
action节点提供了一个让工作流触发计算任务或处理任务执行的机制。Ooize提供了对多种不同类型action的支持:Hadoop map-reduce,Hadoop file system,Pig,SSH,HTTP,eMail,sub-workflow。Oozie可扩展支持更多类型的action。
Oozie工作流可被参数化(在工作流的定义中使用形如${inputDir}的变量)。当提交一个工作流作业时,必须要提供参数的取值。适当的使用参数(比如使用不同的输出目录),多个完全一样的工作流作业可并发运行。

WordCount工作流示例

Oozie 01-概览_第1张图片
工作流图

hPDL定义的工作流:


    
    
        
            ${jobTracker}
            ${nameNode}
            
                
                    mapred.mapper.class
                    org.myorg.WordCount.Map
                
                
                    mapred.reducer.class
                    org.myorg.WordCount.Reduce
                
                
                    mapred.input.dir
                    ${inputDir}
                
                
                    mapred.output.dir
                    ${outputDir}
                
            
        
        
        
    
    
        Something went wrong: ${wf:errorCode('wordcount')}
    
    

你可能感兴趣的:(Oozie 01-概览)