zoukankan      html  css  js  c++  java
  • Azkaban Flow 2.0 使用简介

    本文上接《Azkaban 3.73.1 使用简介》,对Azkaban使用Flow 2.0来创建工作流做简单说明

    声明:官方建议使用Flow 2.0来创建Azkaban工作流,且Flow 1.0将被弃用

    目录

    一、简单的Flow

    1. 新建 flow20.project 文件

    • 这是一个必须的文件,且文件名固定为: flow20.project
    • 文件仅一行内容:azkaban-flow-version: 2.0 ,其作用为表明这是Azkaban Flow 2.0的项目
    touch flow20.project
    echo "azkaban-flow-version: 2.0" > flow20.project
    

    2. 新建 .flow 文件

    • 这同样是一个必须的文件,且文件固定使用:.flow 作为扩展名,如:money.flow、item.flow
    • .flow 文件常用标签

      标签 备注
      nodes 这其中将包含所有要运行的job
      nodes.name job的名字
      nodes.type job类型,如:command、pig
      nodes.config 以键值对的形式,配置要执行的命令或脚本
      config 1. 以键值对的形式,为整个工作流定义参数
      2. 定义的参数在整个Flow中均有效
      3. 使用时通过 ${param_key} 引用定义好的参数

      举例:

      # 文件名:simple_1.flow
      nodes:
      - name: jobA
      type: command
      config:
      command: echo "This is an echoed text by simple flow"

    3. 打包

    压缩上述新建的 flow20.project.flow文件 到同一个.zip文件中

    • 必须是zip压缩文件,当前仅支持zip
    • 所有文件必须在压缩包的根目录中,没有子目录

    4. 创建Project & 上传zip & 运行Flow

    具体过程略,可参考前一篇博文《Azkaban 3.73.1 简单使用》第3.3节的内容

    备注:与之前不同的是,Flow的名字不再是最后一个没有依赖的job的名字,而是 .flow 文件的名字

    二、Job间有依赖关系的Flow

    1. 新建两个文件:flow20.project.flow 为扩展名的文件
    2. 打包zip & 上传zip & 运行

    详细过程略,.flow 文件举例:

    # 文件名:dependsOn.flow  
    nodes:
      - name: jobC
        type: command
        config:
          command: echo "This is jobC, depends on jobA and jobB"
        dependsOn:
          - jobA
          - jobB
    
      - name: jobA
        type: command
        config:
          command: echo "This is jobA."
          
      - name: jobB
        type: command
        config:
          command: echo "This is jobB."
    

    三、嵌入式Flow(Flow间存在依赖)

    1. 新建两个文件:flow20.project.flow 为扩展名的文件
    2. 打包zip & 上传zip & 运行

    注意:依赖的Flow节点的type必须指定为:flow

    详细过程略,.flow 文件举例:

    config:
      param.test: param_test
      
    nodes:
      - name: jobC
        type: command
        config:
          command: echo ${param.test} "This is jobC, embedded on embedded_flow."
        dependsOn:
          - embedded_flow
    
      - name: embedded_flow
        type: flow
        config:
          param.flow.test: param_flow_test
        nodes:
          - name: jobB
            type: command
            config:
              command: echo "This is jobB."
            dependsOn:
              - jobA
    
          - name: jobA
            type: command
            config:
              command: echo ${param.flow.test} "This is jobA."
    

    说明:

    1. config 参数无特殊意义,仅作演示使用,
    2. 与之前不同的是,flow间的依赖,所依赖的flow在web页面中的显示是如下图的样子

    附录

    官方文档

    https://azkaban.readthedocs.io/en/latest/createFlows.html#

    例子源码

    https://github.com/remainsu/azkaban_job

  • 相关阅读:
    ubuntu18.04 安装 jdk
    MySQL集群(PXC)入门
    Synchronized 详解
    Java多线程之内存可见性
    MySQL8.0新特性
    vue配置域名访问
    debain8 安装mysql8
    idea 激活步骤
    spring boot 设置tomcat post参数限制
    人脸识别技术全面总结:从传统方法到深度学习[转载自机器之心]
  • 原文地址:https://www.cnblogs.com/remainsu/p/azkaban-flow-20-shi-yong-jian-jie.html
Copyright © 2011-2022 走看看