Azkaban使用文档

1.Azkaban简介

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

它有如下功能特点:

  • Web用户界面
  • 方便上传工作流
  • 方便设置任务之间的关系
  • 调度工作流
  • 认证/授权(权限的工作)
  • 能够杀死并重新启动工作流
  • 模块化和可插拔的插件机制
  • 项目工作区
  • 工作流和任务的日志记录和审计

2.Azkaban架构和运行模式

azkaban支持python吗_azkaban支持python吗

Azkaban有3种运行模式:

  • solo-servermode:
    使用自带的H2作为元数据库,web server和executor server运行在同一进程,适合测试和小型规模。
  • twoserver mode:
    适合生产环境,使用mysql作为元数据库,web server和executor server运行在不同的进程。
  • distributedmultiple-executor mode:
    适合大型的生产环境,使用mysql作为元数据库,web server和executor server 运行在不同的主机上。

3.Azkaban使用

创建job任务

在自己本地创建以.job结尾的文件

比如 foo.job,加入以下内容

  • foo.job
type=command         #使用unix的bash命令
command=echo "foo"   #执行一条bash

创建 bar.job ,加入以下内容

  • bar.job
type=command

command=echo "bar"

dependencies=env       #这个任务依赖于env这个任务,如果依赖多个任务,则使用“,”隔开。

创建flow任务

如果一个工作流下需要嵌入一个子工作流,则需指定type为flow

创建test_flow.job,加入以下内容:

  • test_flow.job
type=flow            # 添加子工作流
dependencies=foo
flow.name=test_flow  #子工作流结尾的名字

子工作流如下:

  • start.job
type=command
command=echo "test"
  • test_flow.job
type=command
dependencies=start
command=echo "test_flow"

上传和执行任务

登陆azkaban web页面:https://localhost:8443/index

将编写的job脚本以zip格式压缩打包

在azkaban页面创建一个project,然后将任务上传

azkaban支持python吗_元数据库_02

执行任务

azkaban支持python吗_azkaban支持python吗_03

  • 如果执行定时调度任务,则点击schedule
  • 如果不执行定时任务,则点击execute

参数配置

如果执行任务需要指定参数
比如在bar.job中需要指定运行参数

  • bar.job
type=command

command=echo ${day}

dependencies=env

传入参数:

  • 页面指定传参

azkaban支持python吗_元数据库_04

  • 在job文件通目录下创建文件 system.properties
  • system.properties
day=20180423

失败重试

  • 自动重试
    在job文件中配置:
retries=2             #失败重试2次
retry.backoff=300000  #单位毫秒
  • 手动重试
    手动设置重试策略