【调度工具】Azkaban用户手册

目录

一、概述

[1.1 Azkaban 是什么](#1.1 Azkaban 是什么)

[1.2 Azkaban 特点](#1.2 Azkaban 特点)

[1.3 Azkaban 与 Oozie 对比](#1.3 Azkaban 与 Oozie 对比)

功能

工作流定义

工作流传参

定时执行

资源管理

工作流执行

工作流管理

[1.4 Azkaban 运行模式及架构](#1.4 Azkaban 运行模式及架构)

[Azkaban 三大核心组件](#Azkaban 三大核心组件)

Azkaban有两种部署方式

[Azkaban Web Server](#Azkaban Web Server)

[Azkaban Executor](#Azkaban Executor)

[Azkaban 元数据库](#Azkaban 元数据库)

[1.5 版本](#1.5 版本)

1.6测试脚本准备

二、Azkaban任务配置

[2.1 单一job任务配置和执行](#2.1 单一job任务配置和执行)

[2.2 多个job依赖任务流配置](#2.2 多个job依赖任务流配置)

[2.3 任务调度配置](#2.3 任务调度配置)

三、Azkaban历史任务查询

四、Azkaban新增用户


一、概述


1.1 Azkaban 是什么


Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,Azkaban 使用 job 文件建立任务之间的依赖关系,并提供 Web 界面供用户管理和调度工作流

1.2 Azkaban 特点


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

它有如下功能特点:

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

1.3 Azkaban 与 Oozie 对比


Azkaban 和 Oozie 是市面上最流行的两种调度器。总体来说,Ooize 相比 Azkaban 是一个重量级的任务调度系统,功能全面,但部署和使用也更复杂,比较适合作为大型项目的任务调度系统。而 Azkaban 相对而言,配置和使用更为简单,能够满足常见的任务调度,比较适合作为中小型项目的任务调度系统。

Azkaban 和 Oozie 详情对比如下:

功能

两者均可以调度 mapreduce,pig,java,脚本工作流任务

两者均可以定时执行工作流任务
*

工作流定义

Azkaban 使用 Properties 文件定义工作流

Oozie 使用 XML 文件定义工作流
*

工作流传参

Azkaban 支持直接传参

Oozie 支持参数和 EL 表达式
*

定时执行

Azkaban 的定时执行任务是基于时间的

Oozie 的定时执行任务基于时间和输入数据
*

资源管理

Azkaban 有较严格的权限控制,如用户对工作流进行读/写/执行等操作

Oozie 暂无严格的权限控制
*

工作流执行

Azkaban 有两种运行模式,分别是单机模式和集群模式

Oozie 作为工作流服务器运行,支持多用户和多工作流
*

工作流管理

Azkaban 支持浏览器以及 ajax 方式操作工作流

Oozie 支持命令行、HTTP REST、Java API、浏览器操作工作流

1.4 Azkaban 运行模式及架构


Azkaban 三大核心组件
  • 关系型元数据库(MySQL)
  • Azkaban Web Server
  • Azkaban Executor Server
Azkaban有两种部署方式
  • solo server mode(单机模式)

    WebServer 和 ExecutorServer 在同一个进程

  • cluster server mode(集群模式)

    WebServe r和 ExecutorServer 运行在不同进程,并用数据库保存定义及状态

    • 单个Executor
    • 多个Executor

Azkaban Web Server

AzkabanWebServer 是 Azkaban 的主要管理者,负责项目管理、身份验证、调度和监控执行,并且为用户界面

Azkaban Executor

提交和执行工作流,记录工作流日志,和 Azkaban WebServer 可以在同一台服务器,也可部署在独立的机器。把 Executor 单独分开有几个好处:

  • 在多 Executor 模式下可以方便扩展
  • 工作流在某一个 Executor 挂掉,可以在另一个 Executor 上重试
  • 可以滚动升级,从而不影响调度

Azkaban 元数据库

Azkaban 任务调度步骤

  • Azkaban 新建项目
  • 在 Azkaban Web 界面创建 Project
  • 创建 job 文件
  • 将文件压缩为 zip 文件
  • 上传 zip 文件到 Web 界面
  • 执行调度

1.5 版本


|--------|----------------|---------|----------|
| 序号 | 文件及目录 | 版本号 | 描述 |
| 1 | JDK | 1.8.x | Java开发环境 |
| 2 | azkaban.3.30.1 | 3.30.1 | 任务调度工具 |

1.6测试脚本准备


在linux 服务器上准备测试脚本,执行如下命令:

mkdir -p /hadoop/ops/test
cat > /hadoop/ops/test/test_task01.sh << EOF
  echo "test_task01"
EOF

cat > /hadoop/ops/test/test_task02.sh << EOF
   echo "test_task02"
EOF

cat > /hadoop/ops/test/test_task03.sh << EOF
   echo "test_task03"
EOF
chmod u+x /hadoop/ops/test/test_task01.sh
chmod u+x /hadoop/ops/test/test_task02.sh
chmod u+x /hadoop/ops/test/test_task03.sh
chown -R winner_spark:hdfs /hadoop/ops/test

二、Azkaban任务配置


2.1 单一job任务配置和执行


Windows本地创建test_task01.job文件,文件中的内容如下:

type=command
command=bash /hadoop/ops/test/test_task01.sh

创建system.properties

user.to.proxy=winner_spark

文件创建完成后,我们压缩文件为zip包

压缩完成后的文件如下图:

登录Azkaban web 创建Porject "test_task01_project"

  • Name: test_task01_project
  • Description: test_task01_project

创建完成后我们选择 upload 上传test_task01.zip 包

点击"选择文件"

选中 test_task01.zip 包 我们点击打开

选择"Upload"上传

如下图所示 test_task01任务上传成功

对于Flow任务 test_task01 我们可以选择执行、查看此任务执行历史和查看配置信息。

我们选择执行Flow "Execute Flow"

我们选择 "Execute"也就是立即执行一次。

点击"Continue"继续

如下图显示绿色代表任务执行成功。

选择Job List可以看到Flow 的执行时间、执行状态和查看详细日志选项。

我们可以选择"Details"查看任务运行的详细日志输出。

2.2 多个job依赖任务流配置


Windows本地创建system.properties

user.to.proxy=winner_spark

创建test_task01.job文件,文件中的内容如下:

type=command
command=bash /hadoop/ops/test/test_task01.sh

创建文件名test_task02.job,依赖test_task01.job,dependencies写第一个job的文件名,如果有多个依赖,需要用逗号隔开。

type=command
dependencies=test_task01
command=bash /hadoop/ops/test/test_task02.sh

创建文件名test_task03.job,依赖test_task02.job,dependencies写第二个job的文件名,如果有多个依赖,需要用逗号隔开

type=command
dependencies=test_task02
command=bash /hadoop/ops/test/test_task03.sh

文件创建完成后,我们压缩文件为zip包

登录Azkaban web 创建Porject "test_task010203_project"

  • Name: test_task010203_project
  • Description: test_task010203_project

创建完成后我们选择 upload 上传azkban-test.zip 包

点击"选择文件"

选中"azkban-test.zip "包,打开

选择"Upload"

如下的Flow 中 我们可以看到任务依赖链的执行顺序。我们选择"Execute Flow"

如下图我们可以看到 Flow View ,此处我们选择"Execute"

选择"Continue"继续执行

如下图显示 Flow test_task01到test_task03依次执行成功

我们选择Job List 可以看到任务Job执行的时间线、执行时间和任务可查看详细日志。

我们进入Flow test_task03 的 "Details"日志中

如下可以看到脚本打印输出"test_task03"

2.3 任务调度配置


我们以2.2步骤多个job任务流为例配置调度任务。

我们选择"Execute Flow"

我们选择"Schedule"

下图中是任务调度时间配置页面,配置的cron格式如下:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * 

下图中配置的任务调度时间是每天的9-22之间每5分钟执行一次。配置好调度时间后我们选择"Schedule"

选择"Continue"

如下图中我们可以在"Scheduling"菜单中看到任务第一次调度时间、下一次运行时间、cron调度时间表达式、移除调度。



三、Azkaban历史任务查询


如下图为菜单History 提供的历史任务搜索功能,包括:快速搜索和高级过滤。

如下使用快速搜索在搜索栏中输入"test_task03",点击"Quick Search"完成搜索。

选择"Advanced Filter"

任务状态选择搜索"Failed"的所有历史任务

选择"Filter"

如下图会显示所有失败任务:

四、Azkaban新增用户


编辑文件/hadoop/azkaban/azkaban-web/conf/azkaban-users.xml

vim /hadoop/azkaban/azkaban-web/conf/azkaban-users.xml
<user username="winner_spark" password="winner@001" groups="group_inspector" menus="history,hdfs"/>
  <group name="group_inspector" roles="inspector" />
  <role name="inspector" permissions="READ"/>

menus="history,hdfs" 表示配置限制只读用户winner_spark拥有history,hdfs两个菜单的查看权限。

添加完成后,"wq"保存退出。执行如下命令重启Azkaban:

cd /opt/azkaban-deploy
sh startAzkaban.sh restart

重启完成

登录Azkaban Web页面,登录地址 https://xxxxx:8444/, 使用账号密码: winner_spark/winner@001

从上图中可以看到只读用户winner_spark拥有history,hdfs两个菜单的查看权限。默认不配置拥有全部菜单的操作权限。

相关推荐
飞翔的佩奇16 天前
xxl-job适配sqlite本地数据库及mysql数据库。可根据配置指定使用哪种数据库。
数据库·spring boot·mysql·sqlite·xxl-job·任务调度
△曉風殘月〆1 个月前
如何在IIS中为typecho博客启用HTTPS访问
iis·typecho·windows server·web server·自建博客
软件算法开发2 个月前
云计算任务调度优化matlab仿真,对比蚁群优化和蛙跳优化
matlab·云计算·任务调度·蛙跳优化·蚁群优化
海豚调度2 个月前
AI 大模型时代呼唤新一代基础设施,DataOps 2.0和调度编排愈发重要
人工智能·任务调度·dataops·大数据调度
james的分享2 个月前
调度系统之Oozie
大数据·调度工具
加菲盐0083 个月前
任务调度框架革新:TASKCTL在Docker环境中的高级应用
运维·任务调度·taskctl·自动化调度
爱看书的小沐4 个月前
【小沐学Python】Python实现Web服务器(CentOS下打包Flask)
linux·python·ubuntu·flask·centos·pyinstaller·web server
华为云开发者联盟4 个月前
一文带你搞清楚Python的多线程和多进程
python·多线程·多进程·任务调度·华为云开发者联盟
tmax52HZ4 个月前
Mybatis源码剖析
sql注入·动态sql·executor·mybatis源码·metaobject·spring整合mybatis·mybatis二级缓存
Mr.Cssust4 个月前
【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法
异步任务·嵌入式软件·任务调度·mbd·matlab/simulink·嵌入式处理器·定时器中断