基本概念
眼下计算框架和作业类型繁多:
MapReduce Java、Streaming、HQL、Pig等
怎样对这些框架和作业进行统一管理和调度:
不同作业之间存在依赖关系(DAG);
周期性作业
定时运行的作业
作业运行状态监控与报警
多种解决方式:
Crontab
自己设计调度系统
直接使用开源系统
Hadoop作业流调度系统基本功能
对常见作业类型进行调度
MapReduce(Java、Streaming等)作业
Hive作业
Pig作业
Shell ….
依据须要对作业进行调度
按周期调度
定时调度……
支持容错与报警
可视化作业流执行过程
常见的开源作业流调度系统
Oozie (已经成为hadoop标配)
Yahoo。开源,基于xml表达作业依赖关系;
Azkaban
Linkedin开源,通过Java property配置作业依赖关系
Zeus(宙斯) (据说不再更新)
阿里开源,通过界面配置作业依赖关系
其它开源系统
Cascading(通过Java API编程实现作业依赖关系)
Oozie执行流程
Oozie基本架构
Oozie 使用方式
Oozie CLI
JAVA API
REST API
WEB UI(仅仅读)
Oozie基本概念
作业流由一组行为节点(HadoopMR作业、Hive作业等)构成,且这些节点通过控制流节点相连;
控制流节点定义了工作流的起始与结束,并控制着工作流的运行路径;
行为节点包括一个计算/处理任务。包括:Hadoop map-reduce, HDFS, Pig, SSH, HTTP, eMail等
Oozie工作流是通过hPDL语言(一种XML过程定义语言)编写的。
Oozie 层次结构
Oozie Action
支持Hadoop map-reduce, HDFS,
Pig, SSH, HTTP, eMail等;
可设置重试次数。
Oozie 控制流
Coordinator
定期运行一个工作流;
数据准备完成后运行一个工作流。
Oozie官网
http://oozie.apache.org/