关于java:azkaban调研

42次阅读

共计 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 开发,代码构造清晰,易于二次开发
  • 反对重试, 告警

劣势

  1. web server 存在单点故障危险
  2. 工作须要手动编写脚本创立, 并打包成 zip 包上传
  3. 工作数量过大时广泛反馈存在卡死, 可能就是因为 web server 单点导致的

    参考

    https://blog.csdn.net/clypm/article/details/79076801

正文完
 0