大数据Azkaban常见工作流进阶实战

简介: 大数据Azkaban常见工作流进阶实战

1.Java案例工作流

1)新建一个 azkaban 的 maven 工程

2)创建包名:com.atguigu

3)创建 AzTest 类

public class AzTest {
    public static void main(String[] args) {
        System.out.println("This is for testing!");
    }
}

4)打包成 jar 包 azkaban-1.0-SNAPSHOT.jar

5)新建 testJava.flow,内容如下

nodes:
  - name: test_java
  type: javaprocess
  config:
    Xms: 96M
    Xmx: 200M
    java.class: com.atguigu.AzTest

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

Xms:最小堆

Xmx:最大堆

classpath:类路径

java.class:要运行的 Java 对象,其中必须包含 Main 方法

main.args:main 方法的参数


6)将 Jar 包、flow 文件和 project 文件打包成 javatest.zip

7)创建项目=》上传 javatest.zip =》执行作业=》观察结果


2 条件工作流案例

条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job的父 Job 输出的运行时参数构成,也可以使用预定义宏。在这些条件下,用户可以在确定 Job执行逻辑时获得更大的灵活性,例如,只要父 Job 之一成功,就可以运行当前 Job。


2.1 运行时参数 案例

2.2.1 基本原理

(1)父 Job 将参数写入 JOB_OUTPUT_PROP_FILE 环境变量所指向的文件

(2)子 Job 使用 ${jobName:param}来获取父 Job 输出的参数并定义执行条件


2.2.2 支持的条件运算符

(1)== 等于

(2)!= 不等于

(3)> 大于

(4)>= 大于等于

(5)< 小于

(6)<= 小于等于

(7)&& 与

(8)|| 或

(9)! 非


2.2.3 案例

需求:

JobA 执行一个 shell 脚本。

JobB 执行一个 shell 脚本,但 JobB 不需要每天都执行,而只需要每个周一执行。

(1)新建 JobA.sh

#!/bin/bash
echo "do JobA"
wk=`date +%w`
echo "{\"wk\":$wk}" > $JOB_OUTPUT_PROP_FILE

(2)新建 JobB.sh

#!/bin/bash
echo "do JobB"

(3)新建 condition.flow

nodes:
  - name: JobA
  type: command
  config:
    command: sh JobA.sh
  - name: JobB
  type: command
  dependsOn:
    - JobA
  config:
    command: sh JobB.sh
    condition: ${JobA:wk} == 1

(4)将 JobA.sh、JobB.sh、condition.flow 和 azkaban.project 打包成 condition.zip

(5)创建 condition 项目=》上传 condition.zip 文件=》执行作业=》观察结果

(6)按照我们设定的条件,JobB 会根据当日日期决定是否执行。


03a422640af8411ca04a55a9a66d3594.png

3 预定义宏案例

Azkaban 中预置了几个特殊的判断条件,称为预定义宏。

预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行。可用的预定义宏如

下:

(1)all_success: 表示父 Job 全部成功才执行(默认)

(2)all_done:表示父 Job 全部完成才执行

(3)all_failed:表示父 Job 全部失败才执行

(4)one_success:表示父 Job 至少一个成功才执行

(5)one_failed:表示父 Job 至少一个失败才执行

1)案例

需求:

JobA 执行一个 shell 脚本

JobB 执行一个 shell 脚本

JobC 执行一个 shell 脚本,要求 JobA、JobB 中有一个成功即可执行

(1)新建 JobA.sh

#!/bin/bash
echo "do JobA"

(2)新建 JobC.sh

#!/bin/bash
echo "do JobC"

(3)新建 macro.flow

nodes:
- name: JobA
type: command
config:
command: sh JobA.sh
- name: JobB
type: command
config:
command: sh JobB.sh
- name: JobC
type: command
dependsOn:
- JobA
- JobB
config:
command: sh JobC.sh
condition: one_success

(4)JobA.sh、JobC.sh、macro.flow、azkaban.project 文件,打包成 macro.zip。

注意:没有 JobB.sh。

(5)创建 macro 项目=》上传 macro.zip 文件=》执行作业=》观察结果


4 定时执行案例

需求:JobA 每间隔 1 分钟执行一次;

具体步骤:

1)Azkaban 可以定时执行工作流。在执行工作流时候,选择左下角 Schedule

2)右上角注意时区是上海,然后在左面填写具体执行事件,填写的方法和 crontab 配置定时

任务规则一致。

3)观察结果

4)删除定时调度

点击 remove Schedule 即可删除当前任务的调度规则

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 SQL 监控
数据中台架构解析:湖仓一体的实战设计
在数据量激增的数字化时代,企业面临数据分散、使用效率低等问题。数据中台作为统一管理与应用数据的核心平台,结合湖仓一体架构,打通数据壁垒,实现高效流转与分析。本文详解湖仓一体的设计与落地实践,助力企业构建统一、灵活的数据底座,驱动业务决策与创新。
|
存储 SQL 分布式计算
别让你的数据“裸奔”!大数据时代的数据隐私保护实战指南
别让你的数据“裸奔”!大数据时代的数据隐私保护实战指南
904 19
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
723 0
|
SQL 分布式计算 大数据
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
本文深入介绍 Hive 与大数据融合构建强大数据仓库的实战指南。涵盖 Hive 简介、优势、安装配置、数据处理、性能优化及安全管理等内容,并通过互联网广告和物流行业案例分析,展示其实际应用。具有专业性、可操作性和参考价值。
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1289 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
SQL 缓存 数据处理
数据无界、湖仓无界,Apache Doris 湖仓一体典型场景实战指南(下篇)
Apache Doris 提出“数据无界”和“湖仓无界”理念,提供高效的数据管理方案。本文聚焦三个典型应用场景:湖仓分析加速、多源联邦分析、湖仓数据处理,深入介绍 Apache Doris 的最佳实践,帮助企业快速响应业务需求,提升数据处理和分析效率
1010 3
数据无界、湖仓无界,Apache Doris 湖仓一体典型场景实战指南(下篇)
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集