一、概述
Azkaban是一套任务调度系统,可以调度command、hadoopMR、hive、spark、pig等任务,而且支持自定义plugin。本文将总体介绍Azkaban系统提供的各种功能。
在介绍功能之前,我们先准备一个简单的flow,用于演示。
Azkaban有三个核心的概念:
Project:一个project包含一个工作流;一个project对应一个flow
Flow:具体工作流,一个flow由一个或多个job组成
Job:一个工作流中的具体节点,可以是各种类型的执行任务
为了简单起见,本文使用最简单的任务类型:command 作为功能的演示。
编写一个包含两个job的flow的过程如下:
1、新增一个文件夹 command
2、在该文件夹下创建 cmd1.job 文件,内容如下:
type=command
command=echo "This is azkaban cmd1 ... "
command.1=pwd
3、在该文件夹下创建另外一个文件 cmd2.job,内容如下:
type=command
command=echo "This is azkaban cmd2 ... "
command.1=whoami
#依赖前一个job
dependencies=cmd1
可以看出,flow中的job之间是通过 dependencies 属性进行依赖的。
4、打包成zip文件
打包时是在command目录下进行的,不能直接把command目录打包,因为Azkaban要求压缩包解压后就可以看到job文件,而不是包含了一层目录,而且要打包成zip文件,不能是rar格式。command目录内容如下:
打包后的压缩包内容如下:
二、任务提交模块功能介绍
1、新增一个project,命名为command
新增完成后的界面如下
2、上传zip包
进入command 工程后,点击 Upload 按钮,打开上传界面,选择刚才打包的 command.zip 文件,然后点击Upload 进行上传
上传界面如下:
3、工程主界面功能介绍
(1)Flows:可以看到工程的每个job节点
(2)Permissions:工程的权限信息
(3)Project Logs:工程的操作日志信息
Flows下的Executions是可以看到该任务的历史执行信息,Summary是该任务的汇总信息
我们来重点关注一下 "Execute Flow" 执行按钮的功能
4、执行界面分为以下五个部分
(1)Flow View:查看节点信息
通过dependencies关联的各个job节点,可以在这里看到清晰的依赖关系,其中通过选中job节点后右键,可以编辑该job参数,激活(Enable),冻结(Disable)该节点,这样在执行的时候就可以跳过被冻结的节点,默认节点是激活的。
(2)Notification:任务执行成功或者失败后进行告警,需要用户填写告警邮箱
(3)Failure Options:当任务失败的时候进行的操作
Finish Current Running:只完成当前运行的job,不会启动其他的job(默认)
Cancel All:立即取消所有的job,并使该flow失败
Finish All Possible:继续执行flow的其他job任务
(4)Concurrent:并行执行选项
(5)Flow Parameters:全局运行参数,可以覆盖job里的参数值
三、任务执行模块功能介绍
任务的执行可以分为立即执行和定时执行
1、立即执行
点击 Execute 按钮,就可以执行任务,系统会先生成一个execid,作为执行该任务的唯一标志
2、定时执行
点击 Schedule 按钮,任务进入定时执行配置界面,使用的是cron表达式,如下:
这是 Azkaban 3.10.0版本提供的最新的功能。
四、定时执行展示界面
由上一步提交的定时执行任务,会在这个界面中显示出来。
用户可以点击"Set SLA"按钮,指定任务在规定的时间内执行完成,否则就进行告警,如下图
五、任务执行界面
Currently Running:当前正在执行的任务
Recently Finished:最近已经完成在任务
六、历史执行任务
任务只要提交了,都会在这里显示出来。如果运行的任务过多,用户可以通过条件过滤查询,比如:
Quick Search:根据flow名称查询
Advanced Filter:高级条件查询
用户可以通过点击 Execution Id查看该任务的执行日志情况
(1)点击任务的 Execution Id,比如上图中的 "1088",进入任务执行情况界面,在该界面中,用户可以看到每个节点执行是否成功,如下:
(2)查看节点执行日志
点击 Job List 执行标签页,每一项都有Details链接,在这里可以看到任务的执行日志
任务执行日志如下:
至此,Azkaban的大概功能介绍完成。