• 数据仓库任务调度器-Azkaban | 案例测试<自动邮件报警通知机制>



    一、内容说明

           此文章主要向大家演示在大数据项目中使用Azkaban作为任务调度器的时候,当任务发生错误和失败,又或者任务执行成功时怎么部署实现Azkaban自动发送邮件通知项目负责人,在这篇文章中我将126邮箱交给Azkaban使用,作为自动报警机制的发件人,而使用qq邮箱作为项目执行者接收Azkaban的报警信息。
           接下来,我将为大家一步一步的讲解,如果对您有用,感谢一键三连。

    二、准备工作

    1. 安装Azkaban
      教程:点击此链接,文章中有详细的安装教程!
    2. 注册好一个126邮箱、qq邮箱也可以实现邮件报警通知,因为我这里是将126邮箱交由azkaban就行管理,且在后期的电话报警机制中qq邮箱无法使用,所以我注册了一个126邮箱。

    三、配置邮箱报警机制

    1.配置发件人邮箱

    由于我们需要将发件人邮箱交给azkaban这个第三方平台进行使用,因此我们需要将126邮箱的SMTP设置为开启状态,且保存它给出的授权码,这个授权码我们将会配置到azkaban-web的azkaban.properties文件中,作为Azkaban使用邮箱的认证信息。

    1. 打开126邮箱
      在这里插入图片描述

    2. 打开设置,点击SMTP
      在这里插入图片描述

    3. 将POP3/SMTP服务设置为开启状态

      • 1 .点击设置开启
        在这里插入图片描述

      • 2 .手机扫码,使用注册邮箱的手机号发送短信

      • 3 .获得授权码

      注意:一定要将授权码进行保存,不然后面又要重新操作一次,此授权码在配置azkaban-web中需要使用,不然无法实现azkaban邮件报警功能

    2.配置azkaban-web

    1. 配置Azkaban发送邮件报警功能
      修改/azkaban/azkaban-web/conf目录下的azkaban.properties文件,配置邮件发送机制 ,mail.sender和mail.host在文件中已有,我们还需要在文件中添加mail.user= 和 mail.password=

      mail.sender=xuxiang_ethan@126.com
      mail.host=smtp.126.com
      mail.user=xuxiang_ethan@126.com
      mail.password=此处填写邮箱授权码
      

      注意: sender为发件人邮箱,host为邮箱smtp的服务器地址,其中user为发送者邮箱地址,password为前面开启SMTP时的授权码

      退出并保存azkaban.properties文件,启动Azkaban-exec,激活Azkaban-exec,且启动Azkaban-web,如果已经启动了Azkaban-exec的只需要重新启动Azkaban-web即可

    3.编写案例进行测试

    需求:
    JobA执行shell脚本JobA.sh
    JobB执行shell脚本JobB.sh
    JobC执行shell脚本JobC.sh

    • 1.在windows本地编写三个shell脚本如下

      #! /bin/bash
      echo "I am JobA"
      
      #! /bin/bash
      echo "I am JobB"
      
      #! /bin/bash
      echo "I am dependence JobA and JobB"
      

      编写mail.project文件

      azkaban-flow-version: 2.0
      
      • 2.编写mail.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 
      

    演示Azkaban任务发生错误时报警

      1. 将JobA.sh、JobC.sh以及mail.project、mail.flow放在一个文件夹中,并将文件夹打包为zip压缩包,注意:此处故意没有将JobB.sh放入文件夹,故意产生错误,展示效果
        在这里插入图片描述
        压缩包
        在这里插入图片描述
      1. 进入azkaban-web的页面进行登录,用户名和密码在前面的安装中有详细说明,在azkaban-web/conf/azkaban-users.xml中
        在这里插入图片描述
      1. 创建项目 在azkaban中创建调度作业项目
      1. 上传压缩包
        在这里插入图片描述
      1. 点击Executor Flow查看任务流程图
        在这里插入图片描述
        在这里插入图片描述
      1. 点击左侧的 Notification 配置邮件报警的收件邮箱
        在这里插入图片描述
      1. 填写报警收件人邮箱地址
        在这里插入图片描述
      1. 点击右下角的executor执行任务调度
      1. 任务执行失败,且在我的右下角可以看到由邮箱弹出
        在这里插入图片描述
      1. 邮箱内容
        Execution ‘8’ of flow ‘mail’ of project ‘mail’ has failed on Test
        说明任务发生错误
        在这里插入图片描述

    总结

    至此,Azkaban的报警的整个部署流程就弄好了,任务执行成功的话同样的操作,只需要Job任务以及所需要的shell文件都正确即可!!
    若有写得不明之处还望海涵。感谢关注,感谢点赞

  • 相关阅读:
    从MLPerf谈起:如何引领AI加速器的下一波浪潮
    用“和美”丈量中国丨走进酒博物馆系列⑨
    LeetCode 5. 最长回文子串(C++)
    IntelliJ IDEA 2023.2.1 Android开发变化
    swin-transformer初步理解
    【教3妹学算法】按照频率将数组升序排序
    touch - 创建空文件与修改时间戳
    【JVM】JDBC案例打破双亲委派机制
    一键将Web页面保存至Anki
    Python优化算法03——粒子群算法
  • 原文地址:https://blog.csdn.net/IT_technologier/article/details/127098978