• Azkaban 3.73.1 使用简介


    本文上接《Azkaban 3.73.1 集群搭建(Multiple Executor)》,对Azkaban的使用做简单说明

    目录

    简介

    AzkabanWebServer中的三个主要元素:project、job、flow

    • project:工程/项目
    • job:任务,project中包含的需要执行的任务
    • flow:工作流,由各个job之间的依赖关系所组成

    1. 登录

    1. 因为使用了SSl所以是 https
    2. host为启动WebServer服务的机器ip
    3. port为azkaban-web/conf/azkaban.properties中配置的jetty.ssl.port=8443
    4. 账号密码为 azkaban-web/conf/azkaban-users.xml 中配置的

    2. 创建工程

    首页四个重要的菜单

    菜单 备注
    projects 工程,最重要的部分,所有flows都在工程中运行
    scheduling 显示定时任务
    executing 显示当前运行的任务
    history 显示历史运行任务

    在“projects”菜单下点击“Create Project”完成创建工程,注意请使用英文,中文会报错

    3. 创建job

    • web页面中并没有提供创建job的功能
    • 需要自行创建以.job为扩展名的文件,并将创其通过web页面上传,才能形成job任务
    • 所有的job都需要有一个知道他们如何去执行的type,附:Azkaban Jobtypes 文档
    • .job文件中常用的参数,如下

      参数 备注
      dependencies 定义依赖关系,参数值为该job依赖的任务文件名(不包括.job后缀)
      如果依赖多个,则以逗号分隔,如:job2,job5
      retries 任务失败时自动重启的次数
      retry.backoff 每一次任务尝试重启时之间等待的毫秒数
      working.dir 重新指定任务执行的工作目录,默认为目前正在运行的任务的工作目录
      failure.emails 任务失败时的邮件提醒设置,以逗号分隔多个邮箱
      success.emails 任务成功时的邮件提醒设置,以逗号分隔多个邮箱
      notify.emails 任务无论失败还是成功都邮件提醒设置,以逗号分隔多个邮箱

    3.1 创建 .job 文件

    使用 command type 举例:

    job1

    # 文件名:test_1.job
    type=command
    command=echo "This is a test job, name is test_1."
    retries=5
    

    job2

    # 文件名:test_2.job
    type=command
    dependencies=test_1
    retries=5
    command=echo "This is a test job, name is test_2."
    command.1=pwd
    command.2=ls –l /tmp
    

    job3

    # 文件名:test_3.job
    type=command
    dependencies=test_1
    retries=5
    command=echo "This is a test job, name is test_3."
    command.1=sh /opt/azkaban/job/test_script.sh
    

    注意:/opt/azkaban/job/test_script.sh 为事先在服务器上写好的脚本,且强烈建议使用这种形式,后期维护时,只需修改此文件内容就可以了

    job4

    # 文件名:test_4.job
    type=command
    dependencies=test_2,test_3
    retries=5
    command=echo "This is a test job, name is test_4."
    command.1=netstat -ntlp
    

    job5

    # 文件名:test_5.job
    type=command
    dependencies=test_4
    retries=5
    command=echo "This is a test job, name is test_5."
    command.1=whoami
    

    3.2 打包

    压缩所有.job文件到同一个.zip文件中

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

    3.3 创建Flow

    • 上传打包好的zip文件,进而生成一个Flow
    • Flow的名称为最后一个没有依赖的.job文件的文件名

    选择工程,直接点击“工程名”

    工程页面的三个菜单

    菜单 备注
    Flows 工作流程,有多个job组成
    Permissions 权限管理
    Project Logs 工程日志

    工程页面的三个按钮

    按钮 备注
    Delete Project 删除该工程
    Upload 上传zip文件,进而生成Flow
    Download 下载工程

    点击“Upload”上传zip

    3.4 运行Flow

    Flow的三个操作按钮

    按钮 备注
    Execute Flow 配置或执行Flow
    Executions Flow的执行记录
    Summary Flow的总结

    点击“Execute Flow”配置执行该流程

    Execute Flow 的几个菜单

    菜单 备注
    Flow view 流程视图,“右键”可以禁用/启用某些job
    Notification 定义任务成功或者失败是否发送邮件
    Failure Options 定义一个job失败,剩下的job怎么执行
    Concurrent 并行任务执行设置
    Flow Parametters 参数设置

    点击左下方的“Schedule”可设置定时执行,下方绿色字体为执行时间的提示

    点击右下方“Execute”执行该Flow

    “Continue”之后可以直接看到Flow的运行结果,“绿色”成功、“蓝色”执行中、“红色”失败

    可查看每一个job的运行日志,如果有报错,也可以直接查看错误日志

    首次运行是可能的报错

    ERROR [ExecutorServlet] [Azkaban] executor became inactive before setting up the flow 1
    azkaban.executor.ExecutorManagerException: executor became inactive before setting up the flow 1
    


    需要手动去激活一下 executor,方式如下:

    curl http://${executorHost}:${executorPort}/executor?action=activate
    

    附录

    参考

    1. 官方:https://azkaban.github.io/azkaban/docs/latest/#creating-flows
    2. https://juejin.im/post/5c8a289151882504715038cc
    3. https://www.jianshu.com/p/01188607a794
    4. http://www.jobplus.com.cn/article/getArticleDetail/51461

    例子源码

    https://github.com/remainsu/azkaban_job

  • 相关阅读:
    学习新东西 方法
    转 Dock 外 命令解析
    转 Dockerfile 常用指令
    RPC应用的java实现(转)
    link with editor
    org.xml.sax.SAXParseException: prolog 中不允许有内容
    webservice
    logging.xml file setfile(null,true) call failed
    log4j配置 logging.xml (转载)
    tomcat server.xml docbase workdir
  • 原文地址:https://www.cnblogs.com/remainsu/p/azkaban-3731-shi-yong-jian-jie-multiple-executor.html
Copyright © 2020-2023  润新知