一、内容说明
此文章主要向大家演示在大数据项目中使用Azkaban作为任务调度器的时候,当任务发生错误和失败,又或者任务执行成功时怎么部署实现Azkaban自动发送邮件通知项目负责人,在这篇文章中我将126邮箱交给Azkaban使用,作为自动报警机制的发件人,而使用qq邮箱作为项目执行者接收Azkaban的报警信息。
接下来,我将为大家一步一步的讲解,如果对您有用,感谢一键三连。
二、准备工作
- 安装Azkaban
教程:点击此链接,文章中有详细的安装教程! - 注册好一个126邮箱、qq邮箱也可以实现邮件报警通知,因为我这里是将126邮箱交由azkaban就行管理,且在后期的电话报警机制中qq邮箱无法使用,所以我注册了一个126邮箱。
三、配置邮箱报警机制
1.配置发件人邮箱
由于我们需要将发件人邮箱交给azkaban这个第三方平台进行使用,因此我们需要将126邮箱的SMTP设置为开启状态,且保存它给出的授权码,这个授权码我们将会配置到azkaban-web的azkaban.properties文件中,作为Azkaban使用邮箱的认证信息。
-
打开126邮箱
-
打开设置,点击SMTP
-
将POP3/SMTP服务设置为开启状态
-
1 .点击设置开启
-
2 .手机扫码,使用注册邮箱的手机号发送短信
-
3 .获得授权码
注意:
一定要将授权码进行保存,不然后面又要重新操作一次,此授权码在配置azkaban-web中需要使用,不然无法实现azkaban邮件报警功能 -
2.配置azkaban-web
-
配置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任务发生错误时报警
-
- 将JobA.sh、JobC.sh以及mail.project、mail.flow放在一个文件夹中,并将文件夹打包为zip压缩包,注意:此处故意没有将JobB.sh放入文件夹,故意产生错误,展示效果
压缩包
- 将JobA.sh、JobC.sh以及mail.project、mail.flow放在一个文件夹中,并将文件夹打包为zip压缩包,注意:此处故意没有将JobB.sh放入文件夹,故意产生错误,展示效果
-
- 进入azkaban-web的页面进行登录,用户名和密码在前面的安装中有详细说明,在azkaban-web/conf/azkaban-users.xml中
- 进入azkaban-web的页面进行登录,用户名和密码在前面的安装中有详细说明,在azkaban-web/conf/azkaban-users.xml中
-
- 创建项目
- 创建项目
-
- 上传压缩包
- 上传压缩包
-
- 点击Executor Flow查看任务流程图
- 点击Executor Flow查看任务流程图
-
- 点击左侧的 Notification 配置邮件报警的收件邮箱
- 点击左侧的 Notification 配置邮件报警的收件邮箱
-
- 填写报警收件人邮箱地址
- 填写报警收件人邮箱地址
-
- 点击右下角的executor执行任务调度
-
- 任务执行失败,且在我的右下角可以看到由邮箱弹出
- 任务执行失败,且在我的右下角可以看到由邮箱弹出
-
- 邮箱内容
Execution ‘8’ of flow ‘mail’ of project ‘mail’ has failed on Test
说明任务发生错误
- 邮箱内容
总结
至此,Azkaban的报警的整个部署流程就弄好了,任务执行成功的话同样的操作,只需要Job任务以及所需要的shell文件都正确即可!!
若有写得不明之处还望海涵。感谢关注,感谢点赞