任务调度框架Azkaban Flow1.0和Azkaban Flow2.0

news2025/1/13 13:54:59

目录:

    • 一、Azkaban Flow1.0简介
    • 二、Azkaban Flow1.0基本任务调度
    • 三、Azkaban Flow1.0多任务调度
    • 四、Azkaban Flow1.0调度HDFS作业
    • 五、Azkaban Flow1.0调度MR作业
    • 六、Azkaban Flow1.0调度Hive作业
    • 七、Azkaban Flow1.0在线修改作业配置
    • 八、Azkaban Flow 2.0 简介
    • 九、Azkaban Flow 2.0简单任务调度
    • 十、Azkaban Flow 2.0多任务调度
    • 十一、Azkaban Flow 2.0内嵌流

一、Azkaban Flow1.0简介

Azkaban 主要通过界面上传配置文件来进行任务的调度。它有两个重要的概念:

  • Job: 你需要执行的调度任务;
  • Flow:一个获取多个 Job 及它们之间的依赖关系所组成的图表叫做 Flow。

目前 Azkaban 3.x 同时支持 Flow 1.0 和 Flow 2.0。

二、Azkaban Flow1.0基本任务调度

2.1 新建项目
在 Azkaban 主界面可以创建对应的项目:
在这里插入图片描述
2.2 任务配置
新建任务配置文件 Hello-Azkaban.job,内容如下。这里的任务很简单,就是输出一句 ‘Hello Azkaban!’ :

#command.job
type=command
command=echo ‘Hello Azkaban!’

2.3 打包上传
将 Hello-Azkaban.job 打包为 zip 压缩文件:
在这里插入图片描述

通过 Web UI 界面上传:
在这里插入图片描述
上传成功后可以看到对应的 Flows:
在这里插入图片描述
2.4 执行任务
点击页面上的 Execute Flow 执行任务:
在这里插入图片描述
2.5 执行结果
点击 detail 可以查看到任务的执行日志:
在这里插入图片描述

三、Azkaban Flow1.0多任务调度

在这里插入图片描述
在这里插入图片描述
其他的步骤与标题二的是一样的。

四、Azkaban Flow1.0调度HDFS作业

步骤与上面的步骤一致,这里以查看 HDFS 上的文件列表为例。命令建议采用完整路径,配置文件如下:

type=command
command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop fs -ls /

在这里插入图片描述

五、Azkaban Flow1.0调度MR作业

MR 作业配置:

type=command
command=/usr/app/hadoop-2.6.0-cdh5.15.2/bin/hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3

在这里插入图片描述

六、Azkaban Flow1.0调度Hive作业

作业配置:

type=command
command=/usr/app/hive-1.1.0-cdh5.15.2/bin/hive -f 'test.sql'

其中 test.sql 内容如下,创建一张雇员表,然后查看其结构:

CREATE DATABASE IF NOT EXISTS hive;
use hive;
drop table if exists emp;
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
-- 查看 emp 表的信息
desc emp;

打包的时候将 job 文件与 sql 文件一并进行打包:
在这里插入图片描述

执行结果如下:

在这里插入图片描述

七、Azkaban Flow1.0在线修改作业配置

在测试时,我们可能需要频繁修改配置,如果每次修改都要重新打包上传,这会比较麻烦。所以 Azkaban 支持配置的在线修改,点击需要修改的 Flow,就可以进入详情页面:
在这里插入图片描述
在编辑页面可以新增配置或者修改配置:
在这里插入图片描述

八、Azkaban Flow 2.0 简介

Azkaban 目前同时支持 Flow 1.0 和 Flow2.0 ,但是官方文档上更推荐使用 Flow 2.0,因为 Flow 1.0 会在将来的版本被移除。Flow 2.0 的主要设计思想是提供 1.0 所没有的流级定义。用户可以将属于给定流的所有 job / properties 文件合并到单个流定义文件中,其内容采用 YAML 语法进行定义,同时还支持在流中再定义流,称为为嵌入流或子流。

九、Azkaban Flow 2.0简单任务调度

9.1 任务配置
新建 flow 配置文件:

nodes:
  - name: jobA
    type: command
    config:
      command: echo "Hello Azkaban Flow 2.0."

在当前的版本中,Azkaban 同时支持 Flow 1.0 和 Flow 2.0,如果你希望以 2.0 的方式运行,则需要新建一个 project 文件,指明是使用的是 Flow 2.0:

azkaban-flow-version: 2.0

9.2 打包上传
在这里插入图片描述
9.3 执行结果
由于在 1.0 版本中已经介绍过 Web UI 的使用,这里就不再赘述。对于 1.0 和 2.0 版本,只有配置方式有所不同,其他上传执行的方式都是相同的。执行结果如下:
在这里插入图片描述

十、Azkaban Flow 2.0多任务调度

和 1.0 给出的案例一样,这里假设我们有五个任务(jobA——jobE), D 任务需要在 A,B,C 任务执行完成后才能执行,而 E 任务则需要在 D 任务执行完成后才能执行,相关配置文件应如下。可以看到在 1.0 中我们需要分别定义五个配置文件,而在 2.0 中我们只需要一个配置文件即可完成配置。

nodes:
  - name: jobE
    type: command
    config:
      command: echo "This is job E"
    # jobE depends on jobD
    dependsOn: 
      - jobD
    
  - name: jobD
    type: command
    config:
      command: echo "This is job D"
    # jobD depends on jobA、jobB、jobC
    dependsOn:
      - jobA
      - jobB
      - jobC

  - name: jobA
    type: command
    config:
      command: echo "This is job A"

  - name: jobB
    type: command
    config:
      command: echo "This is job B"

  - name: jobC
    type: command
    config:
      command: echo "This is job C"

十一、Azkaban Flow 2.0内嵌流

Flow2.0 支持在一个 Flow 中定义另一个 Flow,称为内嵌流或者子流。这里给出一个内嵌流的示例,其 Flow 配置如下:

nodes:
  - name: jobC
    type: command
    config:
      command: echo "This is job C"
    dependsOn:
      - embedded_flow

  - name: embedded_flow
    type: flow
    config:
      prop: value
    nodes:
      - name: jobB
        type: command
        config:
          command: echo "This is job B"
        dependsOn:
          - jobA

      - name: jobA
        type: command
        config:
          command: echo "This is job A"

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

论文笔记:路网匹配算法综述

17年的老论文了,作为入门是可以的 1 Intro GPS信号和实际的轨迹是有一段距离的 如果对GPS数据不做处理直接定位,那么位置会被定位到非道路的建筑、湖泊、公园中,这显然是不合理的——>需要对GPS数据进行处理,使得其能较为准确…

nodejs搭建web框架开发web服务

首先安装nodejs,然后安装express MVC框架 1. npm install -g express 由于我写的是一个proxy代理服务所以我也安装了 http-proxy-middleware 【npm install -g http-proxy-middleware】 2.如果执行express,未能识别指令主要原因是因为环境变量中没有express.ex…

你真的使用过低代码产品吗?

低代码已经迅速成为现代软件开发的一个重要组成部分。其核心思想是加快和民主化应用程序开发过程。从开发人员的角度来看,这意味着他们可以用最少的编码来构建复杂的应用程序,使开发过程更快、更简单、更高效。对于企业用户来说,它使他们能够…

ChatGPT搭建AI网站实战

1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模…

创业一定要要组建团队吗?可以一个人独自创业吗,不能一概而论

创业团队,我们需要了解一个概念,那就是“群体”。 在生活中,我们经常会说这样一句话,人以群分,物以类聚。 每个人都不可能离开他人而独立存在,俗话说,“一个篱笆三个桩,一个好汉三个…

SAP批次分类完整检查的使用 (TCODE : BMCC)<转载>

原文链接:https://mp.weixin.qq.com/s/xzG6UqLmTcoLdEBeOnzfwA 最近批次物料收货遇到报错如下 分类数据中的不一致性>交易中止,消息号12126. 从报错字面意思看应该是批次分类属性出现了问题,具体是哪里不一致呢? 可以通过报…

20230427-tortoisegit报错-unsafe-repository

20230427-tortoisegit报错-unsafe-repository 一、软件环境 windows 11 x64 22H2git 2.35.3tortoisegit 2.14.0.0标签:git tortoisegit分栏:GIT 二、报错现象 右键打开tortoisegit,点击commit报错【fatal: unsafe … is owned by someone…

httphtml(HTML语法)

目录 1.http协议 1.Http简介 2.Http特点 3.Http协议格式 1)客户端请求消息格式 2)服务器响应消息格式: 2.Html简介 3.Html标签 1.标签格式: 2.标签分类: 3. 常用标签: 1)h1-h6标题标…

高压放大器在医疗行业生物监测中的应用

最近几年,随着医学领域和先进技术的不断发展,生物监测也变得越来越重要,但是各种影响因素往往会导致研究出现很多问题。这个时候就需要高压放大器发挥作用。那么高压放大器在医疗行业生物监测中如何应用呢,我们一起来看看。 什么是…

这8个摸鱼神器,千万别让你老板知道!

工欲善其事,必先利其器,对于程序员来说也是如此,想早点下班就不能死脑筋,必须借助于一些开发工具来提高自己的工作效率,小编选取了8款任务/项目管理工具,能助你[打通任督二脉],工作效率大大提升…

Linux 安装 Jenkins

#使用yum命令安装wget yum -y install wget# 进入usr目录,创建java文件夹 cd /usr mkdir Jenkins# 进入Jenkins目录 cd ./Jenkins# 配置jenkins的环境变量 vim /etc/profile# 输入i,进入编辑模式,加入以下配置 export JENKINS_HOME/usr/Jenkins# 保存并退…

二叉搜索树(BST)

二叉搜索树是一种二叉树,但它对树中元素的顺序作了限制。在二叉搜索树中,对于任意一个结点,它的左子树(如果有)中的所有元素值都小于它,它的右子树中的所有元素值都大于它。那么基于这个性质,对…

[计算机图形学]蒙特卡洛积分与路径追踪(前瞻预习/复习回顾)

一、Monte Carlo Integration—蒙特卡洛积分 我们学过如可求解不定积分,前提是我们可以求出这个函数的解析式,但是如果我们不知道这个函数解析式是什么怎么办呢?我们知道黎曼积分,它可以把整个函数图像切分成无限密的小长方形来求…

达梦数据库中注释的使用

在管理规模较大的数据库时,我们往往需要面对大量的表与视图,与此同时在表与视图中可能会存在着许多的字段,让人难以迅速分辨,不利于对于数据库对象的管理。除了在命名时,对于有意义的表、视图及列,应尽量赋…

EPIT定时器实验(一)

EPIT定时器简介 EPIT:Enhanced Periodic Interrupt Timer,直译就是增强的周期中断定时器,它主要完成周期性中断定时的。 STM32里面的定时器有很多其它功能,比如输入捕获、PWM输出等,但是I.MX6U的的EPIT定时器只是完成…

c#对c++动态库的调用全流程以及详解

如果对pcl里的函数导出为动态库,分为以下几部分: 对c动态库的导出;c#对c动态库的加载;c#对第2步的调用 一、对c动态库的导出 定义导出的宏定义: #ifndef EXPORT # define EXPORT(rettype) __declspec( dllexport …

数据结构之单链表oJ练习

目录 1.移除单链表中与给数相同的元素 2.反转链表 3.找中间节点 4.找倒数第k个 5.合并两个有序链表 6.链表分割 7.链表的回文结构 8.找公共节点 1.移除单链表中与给数相同的元素 解题思路: 初始化一个新链表,从头结点开始遍历,若相同…

天猫数据分析:2023年Q1空气净化器TOP10品牌销量排行榜

随着全球工业化程度的提高,全球空气污染程度仍将继续增加,各领域对空气净化器的需求不断增长,这也有望带动国内空气净化器行业的市场规模保持增长。 根据鲸参谋电商数据平台的相关数据显示,2023年Q1在天猫平台上,空气净…

02_Lock锁

首先看一下JUC的重磅武器——锁(Lock) 相比同步锁,JUC包中的Lock锁的功能更加强大,它提供了各种各样的锁(公平锁,非公平锁,共享锁,独占锁……),所以使用起来…

shell终端敲入命令计算机都做了什么?

本文参考: linux命令行的运行原理是什么? - 知乎 (zhihu.com) 8.1 键盘敲入 A 字母时,操作系统期间发生了什么? | 小林coding (xiaolincoding.com) shell命令背后的执行过程_shell 命令执行的产生的进程_kyrieguard的博客-CSDN博客…