共计 1196 个字符,预计需要花费 3 分钟才能阅读完成。
架构
- Azkaban Web Server 提供了 Web UI,是 azkaban 的次要管理者,包含 project 的治理,认证,调度,对工作流执行过程的监控等。
- Azkaban Executor Server 负责具体的工作流和工作的调度提交
-
MySQL 用于保留我的项目、日志或者执行打算之类的信息
web 界面
能够查看工作的 dag 图, 工作执行历史和日志, 创立工作的定时调度, 手动杀死工作等
工作创立
Azkaban 应用以.job 为后缀名的键值属性文件来定义工作流中的各个工作,以及应用 dependencies 属性来定义作业间的依赖关系链。这些作业文件和关联的代码最终以 *.zip 的形式通过 Azkaban UI 上传到 Web 服务器上, 并存储到 mysql 中
-- a.job
type=command
command=echo 'xxx'
-- b.job
type=command
dependencies=a
command=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
正文完