Azkaban(二)【WorkFlow案例实操】
1.使用步骤
1)创建.project文件: azkaban-flow-version:2.0
2)创建.flow文件
3)压缩成.zip文件,上传
注意:flow文件是yaml格式
大小写敏感
通过缩进来表达层次,严禁使用\t
属性名:后面跟一个空格
2.案例:
1.hello word
nodes:
- name: Job名称
type: command<job类型[command/javaprocess/flow]>
config:
command: echo "...."/sh xx.sh
2.作业依赖[dependsOn配置作业的依赖关系]
nodes:
- name: A
type: command
config:
command: echo "A"
- name: B
type: command
config:
command: echo "B"
dependsOn:
- A
3.内嵌工作流
nodes:
- name: A
type: flow #flow代表当前Job就是一个工作流
#config:
# command: echo "A" 当前不会打印,因为只有type为command才会执行命令
nodes:
- name: B
type: command
config:
command: echo "A.B"
4.全局配置 [在开头通过config进行配置,后续可以通过${属性名}来引用]
config:
属性名1: 属性值
属性名2: 属性值
nodes:
- name: A
type: command
config:
command: echo "${属性名1} .."
5.自动重试[retries代表重试的次数,retry.backoff代表重试的时间间隔]
nodes:
- name: A
type: command
config:
command: echo "${属性名1} .."
retries: 3
retry.backoff: 5000 #毫秒
6.执行java程序
nodes:
- name: A
type: javaprocess
config:
java.class: com.atguigu.XXX
Xmx: 1024M
Xms: 1024M
# type:javaprocess [代表执行java程序]
# java.class: [执行哪个java类,类中必须要有main方法]
# Xms: [代表启动时的内存容量大小]
# Xmx: [代表执行时的内存的最大容量大小]
# 一般Xms要与Xmx设置一致,防止内存的抖动
7.条件工作流
7.1 根据job的参数进行判断
【在脚本中将json字符串写到azkaban内部的变量<$JOB_OUTPUT_PROP_FILE>中,后续通过${Job名称:属性名}】
在写入$JOB_OUTPUT_PROP_FILE变量的时候,要在脚本的最后一行写入
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:属性名} == "属性值"
a.sh内容
##! /bin/bash
...
echo '{"属性名":"属性值"}' >> $JOB_OUTPUT_PROP_FILE
7.2 azkaban内部宏
nodes:
- name: A
type: command
config:
command: sh a.sh
- name: C
type: command
config:
command: sh c.sh
- name: B
type: command
config:
command: echo "B"
condition: ${A:属性名} == "属性值" && all_success
dependsOn:
- A
- C
#all_done: 依赖任务全部完成[kill、failed、success..都代表完成]
#all_success: 依赖的任务必须全部success
#all_failed: 依赖的任务必须全部failed
#one_failed: 依赖的任务必须要求其中一个failed
#one_success: 依赖的任务必须要求其中一个success
Azkaban(二)【WorkFlow案例实操】的更多相关文章
- 新硬盘挂载-fdisk+mount案例实操
新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...
- Kafka集群优化篇-调整broker的堆内存(heap)案例实操
Kafka集群优化篇-调整broker的堆内存(heap)案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看kafka集群的broker的堆内存使用情况 1>. ...
- Python相关分析—一个金融场景的案例实操
哲学告诉我们:世界是一个普遍联系的有机整体,现象之间客观上存在着某种有机联系,一种现象的发展变化,必然受与之关联的其他现象发展变化的制约与影响,在统计学中,这种依存关系可以分为相关关系和回归函数关系两 ...
- 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了
引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...
- Hive中的数据类型以及案例实操
@ 目录 基本数据类型 集合数据类型 案例实操 基本数据类型 对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它 ...
- (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM
接上段 (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...
- 【windows 访问控制】十二、C#实操 主体 System.Security.Principal 案例
案例1.主体(包含用户和组)和标识(用户名)的使用. PrincipalPolicy枚举:主体类型 分为window主体.未认证的主体和未分配主体GenericPrincipal.GenericIde ...
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- C#多线程同步案例实操
好久没有写博客了,为了养成学习的习惯,培养积极年轻的心态,又回到了博客园这个平台继续撸起时隔多年未光顾的空间. 项目需求: 实现一个简单的获取始发目的耗时.距离,将结果输出表格. 方案思路: 通过多线 ...
随机推荐
- Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学
题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...
- Centos 7 局域网 yum 源搭建
一.需求及实现方式介绍: 需求:现在各个软件版本更新迭代很快,在我们部署一套集群(比如:openstack)后,如果过一段时间想扩展集群时发现软件版本早已迭代更新,安装后导致和现有环境或多或少不兼容, ...
- 更优于 Shellinabox 的 web shell 工具 -- ttyd
ttyd 是一个运行在服务端,客户端通过web浏览器访问从而连接后台 tty (pts伪终端)接口的程序,把 shell 终端搬到 web 浏览器中. WebSocket WebSocket 是 HT ...
- [mysql课程作业]我的大学|作业
第八周周五 1.将xs表中王元的专业改为"智能建筑". # update xs set 专业名='智能建筑' where 姓名='王元'; # select * from xs w ...
- Arraylist,LinkedList和Vector的异同
相同: 都是List接口的常用类,List接口:存储有序,可重复的数据 差异: ArrayList: 是作为List接口中的主要实现的类:线程不安全,效率高.底层使用是Object[] element ...
- Linux&C———进程间通信
管道和有名管道 消息队列 共享内存 信号 套接字 由于进程之间的并不会像线程那样共享地址空间和数据空间,所以进程之间就必须有自己特有的通信方式,这篇博客主要介绍自己了解到的几种进程之间的通信方式,内容 ...
- js中的特数值-null-undefined-NaN
一.补充 1.js中的三大特殊数据:undefined.null.NaN NaN :非法的数值运算得到的结果 特殊之处: 是一个数值型数据,但不是一个数字 NaN不等于任何值,和任何数据都不相等,Na ...
- Calendar.set方法获取前一天的当前时刻
获取前几天的当前时刻的时间方法 Calendar cal = Calendar.getInstance(); Date date = new Date();// 获取当前时间 cal.setTime( ...
- 菜鸡的Java笔记 第三十七 - java 线程与进程
线程与进程 线程与进程的区别 最早的的时候DOS 系统有一个特点:只要电脑有病毒,那么电脑就死机了,是因为传统的DOS 系统属于单进程的操作系统 ...
- 微信小程序(七)
组件: 组件是视图层的基本组成单元 组件自带一些功能与微信风格的样式 一个组件通常包括:开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. 媒体组件 地图 开放能力 画布 视图容器 vie ...