Oozie基础小结
Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流。同时Oozie还是一个java web程序,运行在java servlet容器中,如tomcat中。Oozie以action为基本单位,可以将多个action构成一个DAG图的模式运行。Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie工作流。一个oozi
Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流。
同时Oozie还是一个java web程序,运行在java servlet容器中,如tomcat中。
Oozie以action为基本单位,可以将多个action构成一个DAG图的模式运行。
Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie工作流。
一个oozie服务器主要包括四个服务:Oozie Workflow, Oozie Coordinator, Oozie Bundle 和 Oozie SLA(oozie服务器等级协定)
Oozie Workflow:该组件用于定义和执行一个特定顺序的mapreduce,hive和pig作业。
Oozie Coordinator:该组件用于支持基于事件,系统资源存在性等条件的workflow的自动化执行。
Oozie Bundle:该引擎可以定义和执行“一束”应用,从而提供一个批量化的方法。将一组Coordinator应用程序一起进行管理。
Oozie服务器等级协定SLA:该组件支持workflow应用程序执行过程的记录跟踪。
Oozie使用tomcat等服务器作为web界面展示容器,使用关系型数据库存储Oozie的工作流元数据,默认使用debry,由于debry的缺点,一般情况使用mysql作为oozie的元数据,使用extjs来作为报表展示js框架。
workflow工作周期:
prep:一个工作流第一次创建就处于prep状态,表示工作流以及创建但是还没有运行。
running:当一个已经被创建的工作流job开始执行的时候,就处于running状态。它不会达到结束状态,只能因为出错而结束,或者被挂起。
suspended:一个running状态的工作流job会变成suspended状态,而且它会一直处于该状态,除非这个工作流job被重新开始执行或者被杀死。
killed:当一个工作流job处于被创建后的状态,或者处于running,suspended状态时,被杀死,则工作流job的状态变为killed状态。
failed:当一个工作流job不可预期的错误失败而终止,就会变为failed状态。
workflow流控制节点:
start节点 xml类型:start 该节点定义一个oozie workflow的起始的节点,一个workflow只能有且只有一个start节点。
end节点 xml类型:end 定义一个workflow的结束节点。
decision节点 xml类型:decision 该节点用于描述“switch-case”逻辑
fork节点 xml类型:fork 该节点会将多个执行流程分为多个并发操作。
join节点 xml类型:join 等待前面的fork节点指定的所有action完成。
sub-workflow节点 xml类型:sub-workflow 该节点会调用一个子workflow
kill节点 xml类型:kill 该节点会是oozie服务器杀死当前的workflow作业
当然也可以是java动作,pig动作,mapreduce动作。
workflow扩展action动作:
hive shell email ssh sqoop distcp
workflow异步操作:
workflow中的所有异步操作(action)都需要在hadoop集群上以mapreduce作业的方式进行执行。这样充分利用了集群的优点。
oozie通过两种方式来检查任务是否完成。
1回调:当一个任务和一个计算被启动后,会为任务提供一个回调url,该任务执行完成后,会执行回调来通知oozie
2轮询:在任务执行回调失败的情况下,无论任何原因,都支持以轮询的方式进行查询。
oozie提供这两种方式来控制任务。
将资源密集型的任务放到服务节点之外,使oozie节约服务器资源,确保单个oozie服务器可以支持上千个作业。
注意:需要hadoop集群开启hdfs,yarn,jobhistory服务。
更多推荐
所有评论(0)