Azkaban快速入门

因为之前自己工作中有用过Azkaban作为自动化任务调度工具,所以想参考自己之前的使用经验,总结一下关于Azkaban的使用,方便大家使用Azkaban快速实现企业级自动化任务

如何选择市面上的任务调度工具

总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂,
如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象

什么是Azkaban

Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,
它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系。
Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

Azkaban的特点

AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、跟踪工作流执行进度等一系列任务

负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行

存储大部分执行流状态, AzkabanWebServerAzkabanExecutorServer都需要访问数据库

部署模式

为确保所选的 Executor 能够准确的执行任务,我们须在以下两种方案任选其一,推荐使用方案二

安装依赖包及其作用

该包中就是所有的建表语句,主要是配置 MySQL
azkaban-db-3.84.4.tar.gz

执行服务器(Executor)配置
azkaban-exec-server-3.84.4.tar.gz

服务器(Web)配置
azkaban-web-server-3.84.4.tar.gz

访问端口号

默认是 8443,可以通过修改配置文件 azkaban.properties的方式更改端口号
端口号使用规则: jetty.ssl.port > jetty.port
但是使用 jetty.ssl.port的前提是 jetty.use.ssl = true,这个配置表示开启ssl安全套接层,否则使用jetty.port端口

示例配置文件
jetty.use.ssl=false
jetty.maxThreads=25

jetty.ssl.port=8443
jetty.port=8081

jetty.keystore=keystore
jetty.password=password
jetty.keypassword=password
jetty.truststore=keystore
jetty.trustpassword=password

基本使用

type=command
command=echo 'hello-world'
type=command
command=sh hello-world.sh
type=command
command=/usr/install/spark/bin/spark-submit --class com.test.AzkabanTest test-0.1.0.jar
type=command
command=beeline -u jdbc:hive://localhost:7777 -n hive -p hive -f 'test.sql'
type=command
command=${HADOOP_HOME}bin/hadoop jar hadoop-mapreduce-examples--0.1.0.jar
mapreduce-test ${input} ${output}

使用 dependsOn属性来表示依赖,他的值是一个数组

示例 basic.flow
JobA 和 JobB 执行完了,才能执行 JobC

nodes:
  - name: jobA
  type: command
  config:
    command: echo "I’m JobA"

  - name: jobB
  type: command
  config:
    command: echo "I’m JobB"

  - name: jobC
    type: command
    # jobC 依赖 JobA 和 JobB
    dependsOn:
      - jobA
      - jobB
    config:
      command: echo "I’m JobC"

使用 retriesretry.backoff来配置重试次数,重试的时间间隔

示例 basic.flow,在任务中配置
nodes:
  - name: JobA
    type: command
    config:
      # 执行脚本
      command: sh xxx.sh
      # 重试次数 3次
      retries: 3
      # 重试间隔时间 10000ms 也就是10s
      retry.backoff: 10000

示例 basic.flow,在flow的全局配置
config:
  retries: 3
  retry.backoff: 10000
nodes:
  - name: jobA
    type: command
    config:
      command: sh xxxq.sh
  - name: jobB
  type: command
  config:
    command: sh xxxb.sh
  - name: jobC
    type: command
    dependsOn:
      - jobA
      - jobB
    config:
      command: sh xxxc.sh

Flow View界面右键点击需要重拾的 Job,选择需要的重新执行的某个过程, EnableDisable下面都分别有如下参数:

JavaProcess 类型可以运行一个自定义主类方法,type 类型为 javaprocess,可用的配置为:

示例 basic.flow
nodes:
  - name: test_java
    type: javaprocess
    config:
      Xms: 96M
      Xmx: 200M
      java.class: com.fx67ll.springboot.AzkabanTest

Azkaban 中预置了几个特殊的判断条件,称为预定义宏,预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行,可用的预定义宏如下:

all_success: 表示父 Job 全部成功才执行(默认)
all_done:表示父 Job 全部完成才执行
all_failed:表示父 Job 全部失败才执行
one_success:表示父 Job 至少一个成功才执行
one_failed:表示父 Job 至少一个失败才执行

示例 JobA.sh
echo “do JobA”

示例 JobB.sh
echo “do JobB”

示例 JobC.sh
echo “do JobC”

示例 basic.flow
nodes:
– name: jobA
type: command
config:
command: sh JobA.sh
– name: jobB
type: command
config:
command: sh JobA.sh
dependsOn:
– jobA
– jobB
config:
command: sh JobC.sh
condition: one_success

提交的时候故意不提交 JobB.sh,以测试预定义宏是否生效

在执行工作流时候,选择左下角 Schedule按钮,在 Schedule Flow Options配置即可

YAML

YAML(YAML 不是标记语言)是一种非常灵活的格式,几乎是 JSON 的超集,已经被用在一些著名的项目中,如 Travis CI、Circle CI 和 AWS CloudFormation。
YAML 的库几乎和 JSON 一样无处不在。除了支持注释、换行符分隔、多行字符串、裸字符串和更灵活的类型系统之外,YAML 也支持引用文件,以避免重复代码。

大小写敏感
通过缩进表示层级关系
禁止使用 tab 缩进,只能使用空格键
缩进的空格数目不重要,只要相同层级左对齐即可
使用 # 表示注释

我是 fx67ll.com,如果您发现本文有什么错误,欢迎在评论区讨论指正,感谢您的阅读!
如果您喜欢这篇文章,欢迎访问我的 本文github仓库地址,为我点一颗Star,Thanks~ 😃
转发请注明参考文章地址,非常感谢!!!

Original: https://www.cnblogs.com/fx67ll/p/azkaban-quickstart.html
Author: fx67ll
Title: Azkaban快速入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598966/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • InnoDB数据存储结构

    MySQL服务器上 存储引擎负责对表中数据的读取和写入工作,不同存储引擎中 &#x5…

    数据库 2023年5月24日
    0101
  • synchronized 是可重入锁吗?为什么?

    什么是可重入锁? 若一个程序或子程序可以”在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentr…

    数据库 2023年6月16日
    0124
  • servlet映射路径匹配解析

    开头 servlet是javaweb用来处理请求和响应的重要对象,本文将从源码的角度分析tomcat内部是如何根据请求路径匹配得到处理请求的servlet的 假设有一个reques…

    数据库 2023年6月16日
    0135
  • Mybatis-Plus一键生成代码

    Mybatis-Plus一键生成代码 一、闲言碎语 闲来无事看了看了MP的官网看到一键生成的代码更新了! 整个Ui风格都变了,遂决定瞅一眼新的代码生成器 官网地址~~ 二、引入依赖…

    数据库 2023年5月24日
    0107
  • Linux中MySQL的安装以及卸载

    一.MySQL MySQL 是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收…

    数据库 2023年5月24日
    0134
  • 记一次部署系列:prometheus通过pushgateway配置自定义监控项

    1、部署pushgateway并配置prometheus能够拿到pushgateway的数据,类似下图。部署过程参考:https://www.cnblogs.com/sunnyto…

    数据库 2023年6月9日
    0275
  • 记录一次数据库CPU被打满的排查过程

    1 前言 近期随着数据量的增长,数据库CPU使用率100%报警频繁起来。第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在 or…

    数据库 2023年5月24日
    0140
  • springboot~ApplicationContextAware与@Autowired注解

    ApplicationContextAware是一个接口,它提供一个方法setApplicationContext,当spring注册完成之后,会把ApplicationConte…

    数据库 2023年6月6日
    0118
  • Java并发

    Java并发 JAVA技术交流群:737698533 CAS compare and swap 比较并交换,cas又叫做无锁,自旋锁,乐观锁,轻量级锁 例如下面的代码,如果想在多线…

    数据库 2023年6月16日
    0113
  • Redis-数据结构

    Redis key-value结构组织 首先,Redis使用了一个全局哈希表来保存所有的键值对。这个全局哈希表,也就是一个存放哈希桶(entry)的数组。Redis可以用哈希算法算…

    数据库 2023年6月11日
    0111
  • SQL Server 2022来了

    SQL Server 2022来了 微软SQL Server依然保持着3年内发布一个大版本的传统,最新版本已经来到SQL Server2022 相关特性双向HA/DR 到Azure…

    数据库 2023年6月9日
    0134
  • 数据库设计的十个最佳实践

    数据库是应用及计算机的核心元素,负责存储运行软件应用所需的一切重要数据。为了保障应用正常运行,总有一个甚至多个数据库在默默运作。我们可以把数据库视为信息仓库,以结构化的方式存储了大…

    数据库 2023年5月24日
    0142
  • 55 道MySQL基础题

    1.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后, 删除了第 15, 16, 17 条记录,再把 Mysql 重启,再 insert 一条记 录,这条记录…

    数据库 2023年5月24日
    0139
  • 慢查询SQL排查

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/c56bd0c5.html 你好,我是测试蔡坨坨。 在往期文章中,我们聊过数据库基础知识,可参考「数据库…

    数据库 2023年5月24日
    0118
  • 11、lombok日志记录

    一、添加依赖: org.projectlombok lombok 1.16.18 true 二、改YML: #声明日志配置文件 #日志级别依次为【从高到低】:FATAL > …

    数据库 2023年6月6日
    0133
  • OA系统模块设计方案

    `1.模型管理 :web在线流程设&#x…

    数据库 2023年6月6日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球