【调度工具】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.rhkb.cn/news/296664.html

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

相关文章

基于Python深度学习的中文情感分析系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

docker版Elasticsearch安装,ik分词器安装,用户名密码配置,kibana安装

1、安装es和ik分词器 创建映射目录并赋予权限&#xff1a; mkdir -p /docker_data/elasticsearch/conf mkdir -p /docker_data/elasticsearch/data mkdir -p /docker_data/elasticsearch/plugins chmod -R 777 /docker_data/elasticsearch编写配置文件&#xff1a; vi /dock…

今天也是学python的一天

4.2&#xff1a; ~~~if else语句 ~~~range函数 无法正常输出 ~~~len , zip my_list [apple, banana, cherry] indices range(len(my_list))for index, value in zip(indices, my_list):print(f"Index: {index}, Value: {value}") ~~~enumerate animals [&qu…

Rust Mozilla 的编程语言

Rust 是 Mozilla 的一个新的编程语言&#xff0c;由 web 语言的领军人物 Brendan Eich&#xff08;js 之父&#xff09;&#xff0c;Dave Herman 以及 Mozilla 公司的 Graydon Hoare 合力开发。 创建这个新语言的目的是为了解决一个很顽疾的问题&#xff1a;软件的演进速度大大…

Transformer模型-用jupyter演示逐步计算attention

学习transformer模型-用jupyter演示如何计算attention&#xff0c;不含multi-head attention&#xff0c;但包括权重矩阵W。 input embedding&#xff1a;文本嵌入 每个字符用长度为5的向量表示&#xff1a; 注意力公式&#xff1a; 1&#xff0c;准备Q K V&#xff1a; 先 生…

Linux系统——网络管理

此文章以红帽Linux9版本为例进行讲解。 红帽Linux9版本的网络管理十分全面&#xff0c;可在多处进行网络配置的修改&#xff0c;但需要注意的是&#xff0c;在9版本内&#xff0c;用户可在配置文件内进行网络配置的修改&#xff0c;但系统不会执行修改的命令&#xff0c;而在9之…

基于STM32+VS1053B的MP3设计

目录 一、整体介绍 二、模块介绍 1. stm32主控 2. VS1053B音频解码 3. 按键 4. OLED显示 三、程序代码&#xff1a; 资料下载地址&#xff1a;基于STM32VS1053B的MP3设计 一、整体介绍 话不多说&#xff0c;先看看整体原理图&#xff1a; 制作出来的实…

【Pt】马灯贴图绘制过程 05-铁丝与渲染出图

目录 效果 步骤 一、基本材质 二、浮尘 三、渲染 效果 步骤 一、基本材质 CtrlAlt鼠标右键选中指定的纹理集 在智能材质中将“Iron Forged Old”加入图层 将智能材质“Iron Forged Old”文件夹打开&#xff0c;将图层“Base”和“Edge”的基本颜色改暗一点 二、浮尘 新…

推荐算法策略需求-rank model优化

1.pred_oobe (base) [rusxx]$ pwd /home/disk2/data/xx/icode/baidu/oxygen/rus-pipeline/pipeline-migrate/UserBaseActiveStatPipeline/his_session (base) [rusxx]$ sh test.sh 2. user_skill_history_dict_expt2包含userid [workxx]$ vim /home/work/xx/du-rus/du_rus_o…

B树、B+树、哈夫曼树

目录 1. B树2. B树3. 哈夫曼树 1. B树 特点&#xff1a;一个节点当中可以有多个值&#xff0c;节点内部key 值是有序的&#xff0c;节点内部存储的是key-value类型的数据 磁盘中文件存储用B树。 4阶B树一个节点最多三个key值 5阶B树一个节点最多四个key值 B树有很多的分支&…

[源码] Android 上的一些快捷方式,如通知、快捷方式等

目录 一、通知0. 配置权限1. 测试发送通知代码2. 打开通知设置界面代码3. 前台服务创建常驻通知 二、快捷方式1. 测试添加动态快捷方式代码 三、开发者图块四、桌面小部件 基于jetpack compose 框架的使用代码 一、通知 参见 官方文档 0. 配置权限 <uses-permission andr…

剖析C++中的菱形继承

剖析C中的菱形继承 文章目录 剖析C中的菱形继承前言菱形继承虚拟继承与虚基表总结 前言 在面向对象编程中&#xff0c;继承允许我们构建出复杂的类关系和对象模型。然而&#xff0c;当多个类继承自同一个基类时&#xff0c;可能会引发结构上的冲突和数据冗余。这种情况在C中被…

Linux 命令 top 详解

1 top命令介绍 Linux系统中&#xff0c;Top命令主要用于实时运行系统的监控&#xff0c;包括Linux内核管理的进程或者线程的资源占用情况。这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息&#xff0c;包括系统负载、CPU利用分布情况、内存使用、每个进程的内容…

Vue2电商前台项目(一):项目前的初始化及搭建

一、项目初始化 创建项目&#xff1a;sudo vue create app 1.项目配置 &#xff08;1&#xff09;浏览器自动打开 在package.json文件中&#xff0c;serve后面加上 --open "scripts": {"serve": "vue-cli-service serve --open","buil…

JimuReport 积木报表

一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于 excel 操作风格&#xff0c;通过拖拽完成报表设计…

spring总结-基于XML管理bean超详细

spring ioc总结-基于XML管理bean 前言实验一 [重要]创建bean1、目标和思路①目标②思路 2、创建Maven Module3、创建组件类4、创建spring配置文件7、无参构造器8、用IOC容器创建对象和自己建区别 实验二 [重要]获取bean1、方式一&#xff1a;根据id获取2、方式二&#xff1a;根…

【详解旋转编码器原理与应用】:从类型到作用全面解读

旋转编码器是一种精密的传感器装置&#xff0c;主要用于测量旋转物体的角度、速度、方向或位移等机械运动参数&#xff0c;并将其转换为相应的电脉冲信号或数字信号输出。这种装置广泛应用于工业自动化、机器人技术、伺服控制系统、电梯、电机控制、音视频设备、游戏控制器以及…

数据结构——二叉树(堆)

大家好我是小峰&#xff0c;今天我们开始学习二叉树。 首先我们来学习什么是树&#xff1f; 树概念及结构 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的…

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

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

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

引言 近日&#xff0c;Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证&#xff08;RSALv2&#xff09;和服务器端公共许可证&#xff08;SSPLv1&#xff09;。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变&#xff0c;同时也引发…