【调度工具】Azkaban用户手册

2024-04-04 15:04

本文主要是介绍【调度工具】Azkaban用户手册,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、概述

1.1 Azkaban 是什么

1.2 Azkaban 特点

1.3 Azkaban 与 Oozie 对比

功能

工作流定义

工作流传参

定时执行

资源管理

工作流执行

工作流管理

1.4 Azkaban 运行模式及架构

Azkaban 三大核心组件

Azkaban有两种部署方式

Azkaban Web Server

Azkaban Executor

Azkaban 元数据库

1.5 版本

1.6测试脚本准备

二、Azkaban任务配置

2.1 单一job任务配置和执行

2.2 多个job依赖任务流配置

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 运行模式及架构


image-20210519220432495

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 元数据库

image-20210519220946638

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 << EOFecho "test_task01"
EOFcat > /hadoop/ops/test/test_task02.sh << EOFecho "test_task02"
EOFcat > /hadoop/ops/test/test_task03.sh << EOFecho "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两个菜单的查看权限。默认不配置拥有全部菜单的操作权限。

这篇关于【调度工具】Azkaban用户手册的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876107

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

sqlite3 命令行工具使用指南

《sqlite3命令行工具使用指南》本文系统介绍sqlite3CLI的启动、数据库操作、元数据查询、数据导入导出及输出格式化命令,涵盖文件管理、备份恢复、性能统计等实用功能,并说明命令分类、SQL语... 目录一、启动与退出二、数据库与文件操作三、元数据查询四、数据操作与导入导出五、查询输出格式化六、实用功

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo