Azkaban失败重试配置与使用

658 阅读2分钟

一、简介

Azkaban失败重试分为两种:自动失败重试和手动失败重试。

作用

  • 自动失败重试:当任务第一次执行失败后,可以根据特定时间间隔来进行自动重新执行。
  • 手动失败重试:当任务经历过自动失败重试,在某个节点依旧执行失败,排查修复完问题,继续执行任务时,可以跳过执行成功的工作单元,从上次失败的工作单元向下执行。

场景

  • 自动失败重试

    由于暂时网络波动导致的超时、暂时资源不足导致的超时等原因产生的暂时性故障导致的任务失败。

  • 手动失败重试

    由于服务器宕机、任务配置出错等原因无法通过自动失败重试解决的问题,当问题修复完之后,需要手动失败重试继续执行任务。

二、自动失败重试案例

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

具体步骤

(1)编译配置流

  • 新建demo.flow文件
nodes:
  - name: JobA
    type: command
    config:
      command: sh /not_exists.sh
      retries: 3
      retry.backoff: 10000

command的配置信息是执行根目录下的not_exists.sh文件。

参数说明

  • retries:重试次数
  • retry.backoff:重试的时间间隔(单位:毫秒)

(2)将demo.project和demo.flow文件打成zip包

05.Azkaban失败重试配置与使用01.jpg

(3)通过Azkaban WEB界面上传到服务器上执行

05.Azkaban失败重试配置与使用02.jpg

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

05.Azkaban失败重试配置与使用03.jpg

(5)可以在 Flow 全局配置中添加任务失败重试配置

  • 此时重试配置会应用到所有 Job
config:
    retries: 3
    retry.backoff: 10000
nodes:
  - name: JobA
    type: command
    config:
      command: sh /not_exists.sh

三、手动失败重试案例

需求:JobA=>JobB(依赖于 A)=>JobC=>JobD=>JobE=>JobF。生产环境,任何 Job 都 有可能挂掉,可以根据需求执行想要执行的 Job。

具体步骤

(1)编译配置流

  • 新建basis.flow文件
nodes:
  - name: JobA
    type: command
    config:
      command: echo "This is JobA."

  - name: JobB
    type: command
    dependsOn:
      - JobA
    config:
      command: echo "This is JobB."

  - name: JobC
    type: command
    dependsOn:
      - JobB
    config:
      command: echo "This is JobC."

  - name: JobD
    type: command
    dependsOn:
      - JobC
    config:
      command: echo "This is JobD."

  - name: JobE
    type: command
    dependsOn:
      - JobD
    config:
      command: echo "This is JobE."

  - name: JobF
    type: command
    dependsOn:
      - JobE
    config:
      command: echo "This is JobF."

(2)将basis.project和basis.flow文件打成zip包

05.Azkaban失败重试配置与使用04.jpg

(3)通过Azkaban WEB界面上传到服务器上执行

05.Azkaban失败重试配置与使用05.jpg

(4)当某个任务失败时,点击Prepare Execution按钮

05.Azkaban失败重试配置与使用06.jpg

(5)选择执行错误的节点,进行设置

05.Azkaban失败重试配置与使用07.jpg

说明

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

  • Parents:该作业的上一个任务
  • Ancestors:该作业前的所有任务
  • Children:该作业后的一个任务
  • Descendents:该作业后的所有任务
  • Enable All:所有的任务

设置完成后点击Execute执行任务。