【调度工具】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两个菜单的查看权限。默认不配置拥有全部菜单的操作权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】宝塔default.db占用空间几十g解决方法|宝塔占用磁盘空间特别大解决方法|宝塔磁盘被占满怎么清理

目录 一、前言二、排查问题三、解决方法 一、前言 用过宝塔创建网站&#xff0c;大家应该都非常熟悉&#xff0c;但是用随着用的时间越来越多&#xff0c;宝塔所占用的空间也越来越多&#xff0c;不停的加大数据盘都没有用&#xff0c;我原先买了30G够用了&#xff0c;随着时间…

力扣24. 两两交换链表中的节点

Problem: 24. 两两交换链表中的节点 文章目录 题目描述思路复杂度Code 题目描述 思路 1.创建虚拟头节点dummy和尾指针tial指向dummy&#xff1b;创建指针p指向head 2.当head不为空同时head -> next 不为空时&#xff1a; 2.1.创建指针nextP指向p -> next -> next; 2.2…

AI绘画:Stable Diffusion的高效操作界面,ComfyUI:安装和使用篇

前言 Stable Diffusion&#xff08;简称SD&#xff09;是一款强大的AI绘画工具&#xff0c;通常通过Web UI操作界面进行使用。然而&#xff0c;对于那些寻求更高效率和个性化工作流的用户来说&#xff0c;ComfyUI提供了一个基于节点流程的操作界面&#xff0c;使得工作流定制更…

文献分享:《Clinical metagenomics》

摘要|临床宏基因组下一代测序&#xff08;mNGS&#xff09;是对患者样本中微生物和宿主遗传物质&#xff08;DNA和RNA&#xff09;的综合分析&#xff0c;目前正迅速从研究向临床实验室发展。这种新兴的方法正在改变医生诊断和治疗传染病的方式&#xff0c;其应用涉及广泛的领域…

Java快速入门系列-1(Java概述)

第一章&#xff1a;Java概述 1.1 Java的发展历程1.2 Java的特点与优势1.2.1 特点1.2.2 优势 1.3 Java生态系统介绍1.4 Java在当前技术领域的应用案例 1.1 Java的发展历程 Java语言由Sun Microsystems公司于1995年推出&#xff0c;由James Gosling领导的Green Team小组研发而成…

【深度学习】入门深度学习相关

1.知识点&&小问题 参考视频&#xff1a;最详细的 Windows 下 PyTorch 入门深度学习环境安装与配置 CPU GPU 版 | 土堆教程 1.Pytorch和TensorFlow都是python的包/库。 2.为什么使用Anaconda&#xff1f;Anaconda的优势是有虚拟环境。 3.计算机底层对于Python语言&…

关于C#操作SQLite数据库的一些函数封装

主要功能&#xff1a;增删改查、自定义SQL执行、批量执行&#xff08;事务&#xff09;、防SQL注入、异常处理 1.NuGet中安装System.Data.SQLite 2.SQLiteHelper的封装&#xff1a; using System; using System.Collections.Generic; using System.Data.SQLite; using System.…

天眼护航 安全无界:天通哨兵PS02—电力巡检保护的智能利器

在电力行业中&#xff0c;输电线路的安全稳定运行对于保障社会经济活动至关重要。然而&#xff0c;广阔的输电线路常常穿越复杂的地形和恶劣的自然环境&#xff0c;给电力巡检和保护工作带来了巨大挑战。 为了提高巡检效率和响应速度&#xff0c;更好地保障电力设施的安全运行…

前端三剑客 —— CSS (第三节)

目录 上节回顾&#xff1a; 1.CSS使用有以下几种样式; 2.选择器 1.基本选择器 2.包含选择器 3.属性选择器 [] 4.伪类选择器 &#xff1a; 5.伪元素选择器 ::before :after 3.常见样式的使用 常见样式参考表 一些特殊样式 媒体查询 自定义字体 变换效果 translate&…

深入PostgreSQL中的pg_global表空间

pg_global表空间的位置 在PG当中&#xff0c;一个实例(cluster)初始化完以后&#xff0c;你会看到有下边两个与表空间相关的目录生成&#xff1a; $PGDATA/base $PGDATA/global 我们再用元命令\db以及相关视图看看相应的表空间信息&#xff1a; postgres# \db …

雨云服务器:当清风遇上明月,服务器的美好新时代

引言&#xff1a;为什么说服务器是网站的“心脏”&#xff1f; 在数字时代&#xff0c;网站已经成为企业和个人展示自己的重要平台。然而&#xff0c;想要网站运行得稳定、快速&#xff0c;除了好的内容外&#xff0c;一个稳定、高效的服务器也是至关重要的。就像人体需要有一…

【解决】Unity Profile | FindMainCamera

开发平台&#xff1a;Unity 2020.3.7f1c1 关键词&#xff1a;FindMainCamera   问题背景 ModelViewer 是开发者基于 UnityEngine 编写的相机控制组件。ModelView.Update 中调度52次并触发3次GC.Collect。显然并不期望并尽可能避免 Update 造成的GC 问题。事实上 FindMainCame…

Qt | Qt 的重要文件简介(推荐)

一、项目文件(pro 文件)及其语法 1、项目文件(pro 文件)的作用是列举项目中的源文件, 2、pro 文件的语法形式为:“变量 操作符 值”,比如 QT += widgets,多个值之间使用空格分开。 3、pro 文件的注释:从“#”开始,直至本行结束。 4、pro 文件的操作符见下表 5、pro 文…

Ansible批量操作(上传文件、删除文件指定文件内容、执行sh文件等)

官方网站 https://www.ansible.com/ 一、Ansible 简介 1、Ansible是新出现的自动化运维工具&#xff0c;完全基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行…

随机生成Long全范围数

随机生成Long全范围数 前言实现思路主要代码分区随机生成过程案例&#xff1a;随机生成100个数 朴素的比较总结 前言 使用自带的Random.nextLong()函数生成Long型的长整数&#xff0c;范围比较小&#xff0c;如下图。100个随机数没看见10以内的数字。所以考虑实现随机化生成大…

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Android 高德地图

1.获取Key 进入高德开放平台控制台&#xff0c;创建一个新应用。在创建的应用上点击"添加key"按钮&#xff0c;在弹出的对话框中&#xff0c;依次输入key名称&#xff0c;选择服务平台为“Android平台”&#xff0c;输入发布版安全码 SHA1、以及 Package。 获取 S…

Windows系统基于WSL子系统的torchquantum安装记录GPU版本

子系统需要的环境&#xff1a; anaconda/miniconda、pip换源(清华源) 1.准备 torchquantum最新版本可以从github上找到&#xff0c;直接clone/下载整个project&#xff0c;查看环境要求&#xff0c;需要安装pytorch和tensorflow 新建一个conda环境&#xff0c;注意python最…

Docker,anaconda环境的部署与迁移

功能上线将提上日程&#xff0c;但是如何将我windows环境下的程序放到linux服务器的测试环境跑通呢&#xff1f;这是我这整个清明假期将要解决的一件事&#xff0c;最蠢的办法就是看自己的环境下有哪些依赖&#xff0c;如何到服务器上一个一个下&#xff0c;但是首先这个方法很…

操作系统导论课后作业-第十七章答案

课程作业-第十七章&#xff1a; 17.1首先以标志flag -n 10 -H 0 -p BEST -s 0运行程序来产生一些随机的分配和空闲。你能预测malloc()/free()会返回什么吗&#xff1f;你可以在每次请求后猜测空闲列表的状态吗&#xff1f;随着时间的推移&#xff0c;你对空闲列表有什么发现&a…