zoukankan      html  css  js  c++  java
  • Azkaban(二)【WorkFlow案例实操】

    1.使用步骤

    1)创建.project文件: azkaban-flow-version:2.0
    2)创建.flow文件
    3)压缩成.zip文件,上传
    注意:flow文件是yaml格式
    大小写敏感
    通过缩进来表达层次,严禁使用
    属性名:后面跟一个空格

    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
    
  • 相关阅读:
    数据结构-图
    web.xml的运行顺序
    如何把自己打造成技术圈的 papi 酱
    也谈http中get和post
    手机充电速度及电池使用
    web项目Log4j日志输出路径配置问题
    JAVA模块化
    关于web安全
    Struts2中通配符
    2016第14周一
  • 原文地址:https://www.cnblogs.com/wh984763176/p/13347293.html
Copyright © 2011-2022 走看看