⼯作流调度系统
- ⼀个完整的数据分析系统通常都是由⼤量任务单元组成:
- shell脚本程序
- java程序
- mapreduce程序
- hive脚本等
- 各任务单元之间存在时间先后及前后依赖关系
- 为了很好地组织起这样的复杂执⾏计划,需要⼀个⼯作流
调度系统来调度任务的执⾏
⼯作流调度实现⽅式
- 简单的任务调度
- 直接使⽤
linux
的crontab
;
- 直接使⽤
- 复杂的任务调度
- 开发调度平台或使⽤现成的开源调度系统,⽐如
Ooize
、Azkaban
、Airflow
等
- 开发调度平台或使⽤现成的开源调度系统,⽐如
Azkaban与Oozie对⽐
- 总体来说,
Ooize
相⽐Azkaban
是⼀个重量级的任务调
度系统,功能全⾯,但配置使⽤也更复杂(xml)。 - 如果可以不在意某些功能的缺失,轻量级调度器
Azkaban
是很不错的候选对象。
功能上对比
- 两者均可以调度
mapreduce
,pig
,java
脚本⼯作流任务 - 两者均可以定时执⾏⼯作流任务
⼯作流定义对比
-
Azkaban
使⽤Properties
⽂件定义⼯作流 -
Oozie
使⽤XML
⽂件定义⼯作流
⼯作流传参对比
-
Azkaban
⽀持直接传参,例如${input}
-
Oozie
⽀持参数和EL
表达式,例如${fs:dirSize(myInputDir)}
定时执⾏对比
-
Azkaban
的定时执⾏任务是基于时间的 -
Oozie
的定时执⾏任务基于时间和输⼊数据
资源管理对比
-
Azkaban
有较严格的权限控制,如⽤户对⼯作流进⾏读/写/执⾏等操作 -
Oozie
暂⽆严格的权限控制
⼯作流执⾏对比
-
Azkaban
有两种运⾏模式,分别是-
solo server mode
-
executor server
和web server
部署在同⼀台节点
-
-
multi server mode
-
executor server
和web server
可以部署在不同节点
-
-
-
Oozie
作为⼯作流服务器运⾏,⽀持多⽤户和多⼯作流
Azkaban介绍
- 批量⼯作流任务调度器
- ⽤于在⼀个⼯作流内以⼀个特
定的顺序运⾏⼀组⼯作和流程- 使⽤job配置⽂件建⽴任务之间的依赖关系
-
Azkaban
定义了⼀种KV
⽂件(properties
)格式来建⽴任务之间的依赖关系 - 并提供⼀个易于使⽤的
web
⽤户界⾯维护和跟踪你的⼯作流
有如下功能特点
-
Web
⽤户界⾯ - ⽅便上传⼯作流
- ⽅便设置任务之间的关系
- 调度⼯作流
架构⻆⾊
-
mysql
服务器- 存储元数据,如项⽬名称、项⽬描述、项⽬权限、任务状态、SLA规则等
-
AzkabanWebServer
- 对外提供
web
服务,使⽤户可以通过web
⻚⾯管理 - 职责包括项⽬管理、权限授权、任务调度、监控
executor
。
- 对外提供
-
AzkabanExecutorServer
- 负责具体的⼯作流的提交、执⾏