架构
- Azkaban Web Server 提供了Web UI,是azkaban的次要管理者,包含 project 的治理,认证,调度,对工作流执行过程的监控等。
- Azkaban Executor Server 负责具体的工作流和工作的调度提交
MySQL用于保留我的项目、日志或者执行打算之类的信息
web界面
能够查看工作的dag图,工作执行历史和日志,创立工作的定时调度,手动杀死工作等
工作创立
Azkaban应用以.job为后缀名的键值属性文件来定义工作流中的各个工作,以及应用dependencies属性来定义作业间的依赖关系链。这些作业文件和关联的代码最终以*.zip的形式通过Azkaban UI上传到Web服务器上,并存储到mysql中
-- a.jobtype=commandcommand=echo 'xxx'
-- b.jobtype=commanddependencies=acommand=echo 'xxx'
执行流程
- Webserver依据内存中缓存的各Executor的资源状态(Webserver有一个线程会遍历各个active executor,去发送http申请获取其资源状态信息缓存到内存中),依照抉择策略(包含executor资源状态、最近执行流个数等)抉择一个executor下发作业流;
- executor判断是否设置作业粒度调配,如果未设置作业粒度调配,则在以后executor执行所有作业;如果设置了作业粒度调配,则以后节点会成为作业调配的决策者,即调配节点
- 被调配到作业的executor即成为执行节点,执行作业,而后更新数据库
部署
- solo server mode:最简略的模式,数据库内置的H2数据库,AzkabanWebServer和AzkabanExecutorServer都在一个过程中运行,任务量不大我的项目能够采纳此模式。
- two server mode:数据库为MySQL,治理服务器和执行服务器在不同过程,这种模式下,AzkabanWebServer和AzkabanExecutorServer互不影响。
- multiple executor mode:该模式下,AzkabanWebServer和AzkabanExecutorServer运行在不同主机上,且AzkabanExecutorServer能够有多个
劣势
- 对工作执行的监控,手动杀死/启动等性能集中到了web界面上
- 提供模块化的可插拔机制,原生反对command、java、hive、hadoop;告警也能够通过此扩大
- 基于java开发,代码构造清晰,易于二次开发
- 反对重试,告警
劣势
- web server存在单点故障危险
- 工作须要手动编写脚本创立,并打包成zip包上传
工作数量过大时广泛反馈存在卡死,可能就是因为web server单点导致的
参考
https://blog.csdn.net/clypm/article/details/79076801