大数据技术之Azkaban2

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据技术之Azkaban2

2.2.3 自动失败重试案例

需求:如果执行任务失败,需要重试 3 次,重试的时间间隔 10000ms

具体步骤:

  1. 编译配置流


参数说明:

  • retries:重试次数
  • retry.backoff:重试的时间间隔

2)将修改后的 basic.flow 和 azkaban.project 压缩成 four.zip 文件

3)重复 2.3.1 节 HelloWorld 后续步骤。

4)执行并观察到一次失败+三次重试

5)也可以点击上图中的 Log,在任务日志中看到,总共执行了 4 次。

6)也可以在 Flow 全局配置中添加任务失败重试配置,此时重试配置会应用到所有 Job。

案例如下:


2.2.4 手动失败重试案例

需求:JobA=》JobB(依赖于 A)=》JobC=》JobD=》JobE=》JobF。生产环境,任何 Job 都

有可能挂掉,可以根据需求执行想要执行的 Job。

具体步骤:

1)编译配置流

2)将修改后的 basic.flow 和 azkaban.project 压缩成 five.zip 文件

3)重复 2.3.1 节 HelloWorld 后续步骤。


Enable 和 Disable 下面都分别有如下参数:


Parents:该作业的上一个任务


Ancestors:该作业前的所有任务


Children:该作业后的一个任务


Descendents:该作业后的所有任务


Enable All:所有的任务


4)可以根据需求选择性执行对应的任务。


第 3 章 Azkaban 进阶

3.1 JavaProcess 作业类型案例

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


Xms:最小堆


Xmx:最大堆


classpath:类路径


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


main.args:main 方法的参数(可以传多个值,空格分隔)


案例:


1)新建一个 azkaban 的 maven 工程


2)创建包名:com.atguigu


3)创建 AzTest 类


package com.atguigu;
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

骚戴理解:在Azkaban中,如果在使用JavaProcess类型的作业时没有指定classpath,将默认使用系统变量CLASSPATH的值作为classpath。如果系统变量CLASSPATH未设置,则默认使用当前目录作为classpath。


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


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

3.2 条件工作流案例

条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。


条件可以由当前Job的父 Job 输出的运行时参数构成


条件可以使用预定义宏。


在这些条件下,用户可以在确定 Job执行逻辑时获得更大的灵活性,例如,只要父 Job 之一成功,就可以运行当前 Job。


骚戴理解:例如有三个job,分别是jobA,jobB,jobC,其中jobC依赖于jobA和jobB,默认jobC运行的条件就是jobA和jobB都执行完了,才会执行jobC。但是通过条件工作流功能就可以实现只要jobA和jobB有一个执行完就执行jobC的效果。


预定义宏指的是一些预先定义好的变量,在Azkaban中被用来传递信息和简化工作流的配置。这些预定义宏可以用于工作流文件的各个部分(例如任务命令行中的参数、电子邮件通知模板等),以便在运行时根据需要进行替换。使用预定义宏可以减少重复编码,提高可维护性和灵活性。Azkaban自带了一些预定义宏(例如${jobId}表示当前任务的ID、${startTime}表示任务开始时间等),用户还可以自定义自己的预定义宏。


3.2.1 运行时参数案例

1)基本原理


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


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


2)支持的条件运算符:


(1)== 等于


(2)!= 不等于


(3)> 大于


(4)>= 大于等于


(5)< 小于


(6)<= 小于等于


(7)&& 与


(8)|| 或


(9)! 非


3)案例:


需求:


JobA 执行一个 shell 脚本。


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


(1)新建 JobA.sh


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

骚戴理解:这里date +%w是获取当前是星期几,返回数据,其中周日返回0,其他1-6。然后用梵引`把值赋予给wk变量,最后通过josn的格式把wk写到JOB_OUTPUT_PROP_FILE环境变量里,其中\"是转义后的双引号。这里的思路是jobA获取当前日期然后写到JOB_OUTPUT_PROP_FILE中,jobB去获取jobA传过来的日期,然后进行判断,注意jobA的日期和jobB的日期是同一天


(2)新建 JobB.sh

1. #!/bin/bash
2. 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 会根据当日日期决定是否执行。



3.2.2 预定义宏案例

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

1. #!/bin/bash
2. 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 文件=》执行作业=》观察结果

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
2月前
|
人工智能 搜索推荐 算法
数据平台演进问题之数据库技术面临挑战如何解决
数据平台演进问题之数据库技术面临挑战如何解决
|
3月前
|
分布式计算 Hadoop 分布式数据库
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Hadoop生态系统介绍(二)大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
138 2
|
26天前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
29天前
|
存储 人工智能 算法
AI与大数据的结合:案例分析与技术探讨
【8月更文挑战第22天】AI与大数据的结合为各行各业带来了前所未有的机遇和挑战。通过具体案例分析可以看出,AI与大数据在电商、智能驾驶、医疗等领域的应用已经取得了显著成效。未来,随着技术的不断进步和应用场景的不断拓展,AI与大数据的结合将继续推动各行业的创新与变革。
|
1月前
|
消息中间件 监控 大数据
"探索Streaming技术:如何重塑大数据未来,实时处理引领数据价值即时转化新纪元"
【8月更文挑战第10天】信息技术高速发展,数据成为推动社会进步的关键。面对数据爆炸,高效实时处理成挑战。流处理(Streaming)技术应运而生,即时处理数据流,无需积累。应用于实时监控、日志分析等场景。例如,电商平台利用流处理分析用户行为,推送个性化推荐;智能交通系统预测拥堵。结合Apache Kafka和Flink,实现从数据收集到复杂流处理的全过程。流处理技术促进数据即时价值挖掘,与AI、云计算融合,引领大数据未来发展。
70 5
|
19天前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
25 0
|
2月前
|
机器学习/深度学习 存储 分布式计算
驾驭数据洪流:大数据处理的技术与应用
大数据处理不仅是信息技术领域的一个热门话题,也是推动各行各业创新和发展的重要力量。随着技术的进步和社会需求的变化,大数据处理将继续发挥其核心作用,为企业创造更多的商业价值和社会贡献。未来,大数据处理将更加注重智能化、实时性和安全性,以应对不断增长的数据挑战。
|
2月前
|
传感器 大数据 数据处理
大数据处理中的流计算技术:实现实时数据处理与分析
【7月更文挑战第30天】随着分布式系统、云原生技术、数据安全与隐私保护技术的不断发展,流计算技术将在更多领域得到应用和推广,为大数据处理和分析提供更加高效、智能的解决方案。
|
28天前
|
SQL 存储 分布式计算
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
神龙大数据加速引擎MRACC问题之RDMA技术帮助大数据分布式计算优化如何解决
24 0
|
30天前
|
SQL 分布式计算 大数据
"揭秘MaxCompute大数据秘术:如何用切片技术在数据海洋中精准打捞?"
【8月更文挑战第20天】在大数据领域,MaxCompute(曾名ODPS)作为阿里集团自主研发的服务,提供强大、可靠且易用的大数据处理平台。数据切片是其提升处理效率的关键技术之一,它通过将数据集分割为小块来优化处理流程。使用MaxCompute进行切片可显著提高查询性能、支持并行处理、简化数据管理并增强灵活性。例如,可通过SQL按时间或其他维度对数据进行切片。此外,MaxCompute还支持高级切片技术如分区表和分桶表等,进一步加速数据处理速度。掌握这些技术有助于高效应对大数据挑战。
55 0

热门文章

最新文章