应用场景
-
是由领英公司实现,用于在处理ETL任务时,解决多个Hadoop job运行依赖关系。如Hadoop MR job,Spark job,hive 任务等
-
初期是以单台服务器进行提供服务,但是存在单点故障的问题。随着发展,出现了高可用的解决方案,增加了Azkaban任务调度的鲁棒性
-
架构设计
azkaban三大组件
RDB(MySQL)
- 关系型数据,用来存储在Azkaban新键项目信息,作业依赖关系,调度信息,job触发信息,日志等元数据,保留azkaban作业运行状态。通过提前创建azkaban使用数据库,执行对应SQL文件提前生成。
- 数据库的元数据使用场景,
1.项目管理 2.保存job/flow作业修改状态, 3.执行job/flow 4.搜索以及查看之前的job或flow 5.存储azkaban job运行输出的日志 6.维护不同executor执行flow的状态 7.保证SLA安全访问验证
WebSever
- 所有azkaban服务的主管理器,用于项目管理、安全认证、job调度、运行监控,
回传这些数据给web页面 - azkaban内置jetty服务器,用于接收从web页面创建的job信息,定时触发,调度、运行作业
- 使用文件后缀为“.job”、key-value参数配置的方式区定义work flow的私有任务,并且可以使用”dependencies”来定义job chain的依赖。创建完毕的作业和代码归档为zip文件,通过azkaban web界面上传到webServer或者是curl命令上传,用于azkabanServer调度,运行。
ExecutorServer
- 早期版本中,azkaban单点服务包含WebServer,ExecutorServer。
- 新的版本中,二者被划分为单独的服务。分割原因如下
1.用于执行job的Executor服务的扩展 2.Executor执行job的故障恢复 3.在升级azkaban时,降低对用户的影响及使用难度。
azkaban两种模式
- 2.5版本以后提供单点模型,和重量级server模式
solo-server
- 单点模式,数据库内嵌在H2,并且webServer和executor运行在同一个进程里面。如果是对azkaban试用,该模式比较方便
- 下载链接及安装azkaban组件
two server mode
- 适用对可用性、稳定性要求更高的生产环境。
- RDB要求MySQL实例是主从复制集群,保证RDB可用性
- webServer和Executor运行不同的进程中,以便进行升级和维护时降低对用户影响
- azkaba组件下载安装