大数据之Azkaban 进阶邮箱和电话告警完整使用(第三章)

大数据之Azkaban 进阶邮箱和电话告警完整使用(第三章),第1张

大数据之Azkaban 进阶邮箱和电话告警完整使用(第三章)

大数据之Azkaban 进阶邮箱和电话告警完整使用
  • 一 、Azkaban 进阶
    • 1、JavaProcess 作业类型案例
      • 1)新建一个 azkaban 的 maven 工程
      • 2)创建包名:com.atguigu
      • 3)创建 AzTest 类
      • 4)打包成 jar 包 azkaban-1.0-SNAPSHOT.jar
      • 5)新建 testJava.flow,内容如下
      • 6)将 Jar 包、flow 文件和 project 文件打包成 javatest.zip
      • 7)创建项目=》上传 javatest.zip =》执行作业=》观察结果
  • 二、 条件工作流案例
    • 2.1 运行时参数案例
      • 1)基本原理
      • 2)支持的条件运算符:
      • 3)案例:
        • (1)新建 JobA.sh
        • (2)新建 JobB.sh
        • (3)新建 condition.flow
        • (4)将 JobA.sh、JobB.sh、condition.flow 和 azkaban.project 打包成 condition.zip
        • (5)创建 condition 项目=》上传 condition.zip 文件=》执行作业=》观察结果
        • (6)按照我们设定的条件,JobB 会根据当日日期决定是否执行。
    • 2.2 预定义宏案例
      • 1)案例
        • (1)新建 JobA.sh
        • (2)新建 JobC.sh
        • (3)新建 macro.flow
        • (4)JobA.sh、JobC.sh、macro.flow、azkaban.project 文件,打包成 macro.zip。
        • (5)创建 macro 项目=》上传 macro.zip 文件=》执行作业=》观察结果
    • 2.3 定时执行案例
      • 1)Azkaban 可以定时执行工作流。在执行工作流时候,选择左下角 Schedule
      • 2)右上角注意时区是上海,然后在左面填写具体执行事件,填写的方法和 crontab 配置定时任务规则一致。
      • 3)观察结果
      • 4)删除定时调度
  • 三、报警案例
    • 1 、邮箱报警
      • 1)申请注册一个 163 邮箱
      • 2)点击邮箱账号=》账号管理
      • 3)开启 SMTP 服务
      • 4)一定要记住授权码
    • 2、 默认邮件报警案例
      • 1 ) 在 azkaban-web 节 点 hadoop102 上 , 编 辑
      • 2)保存并重启 web-server。
      • 3)编辑 basic.flow
      • 4)将 azkaban.project 和 basic.flow 压缩成 email.zip
      • 5)创建工程=》上传文件=》执行作业=》查看结果
      • 6)观察邮箱,发现执行成功或者失败的邮件
    • 3、 电话报警案例
      • 1、第三方告警平台集成
      • 1)进入睿象云官网注册账号并登录
      • 2)集成告警平台,使用 Email 集成
      • 3)获取邮箱地址,后边需将报警信息发送至该邮箱
      • 4)配置分派策略
      • 5) 测试
  • 四、Azkaban 多 Executor 模式注意事项
    • 1)在 MySQL 中 azkaban 数据库 executors 表中,查询 hadoop102 上的 Executor 的 id。
    • 2)在执行工作流程时加入 useExecutor 属性,如下

一 、Azkaban 进阶 1、JavaProcess 作业类型案例
JavaProcess 类型可以运行一个自定义主类方法,type 类型为 javaprocess,可用的配置为:
Xms:最小堆
Xmx:最大堆
classpath:类路径
java.class:要运行的 Java 对象,其中必须包含 Main 方法
main.args:main 方法的参数

案例:

1)新建一个 azkaban 的 maven 工程 2)创建包名:com.atguigu 3)创建 AzTest 类
package com.atguigu;
public class AzTest {
 public static void main(String[] args) {
 System.out.println("This is for testing!");
 } }
4)打包成 jar 包 azkaban-1.0-SNAPSHOT.jar 5)新建 testJava.flow,内容如下
nodes:
 - name: test_java
   type: javaprocess
   config:
    Xms: 96M
    Xmx: 200M
    java.class: org.example.TestJavaProcess
6)将 Jar 包、flow 文件和 project 文件打包成 javatest.zip 7)创建项目=》上传 javatest.zip =》执行作业=》观察结果




二、 条件工作流案例

条件工作流功能允许用户自定义执行条件来决定是否运行某些Job。条件可以由当前Job 的父 Job
输出的运行时参数构成,也可以使用预定义宏。在这些条件下,用户可以在确定 Job 执行逻辑时获得更大的灵活性,例如,只要父 Job
之一成功,就可以运行当前 Job。

2.1 运行时参数案例 1)基本原理

(1)父 Job 将参数写入 JOB_OUTPUT_PROP_FILE 环境变量所指向的文件
(2)子 Job 使用 ${jobName:param}来获取父 Job 输出的参数并定义执行条件

2)支持的条件运算符:
(1)== 等于
(2)!= 不等于
(3)> 大于
(4)>= 大于等于
(5)< 小于
(6)<= 小于等于
(7)&& 与 (8)|| 或 (9)! 非
3)案例:

需求:
JobA 执行一个 shell 脚本。
JobB 执行一个 shell 脚本,但 JobB 不需要每天都执行,而只需要每个周一执行。

(1)新建 JobA.sh
#!/bin/bash
echo "do JobA"
wk=`date +%w`
echo "{"wk":$wk}" > $JOB_OUTPUT_PROP_FILE
(2)新建 JobB.sh
#!/bin/bash
echo "do JobB"
(3)新建 condition.flow
nodes:
  - name: JobA
    type: command
    config:
      command: sh JobA.sh
  - name: JobB
    type: command
    dependsOn:
      - JobA
    config:
      command: sh JobB.sh
    condition: ${JobA:wk} == 1
(4)将 JobA.sh、JobB.sh、condition.flow 和 azkaban.project 打包成 condition.zip (5)创建 condition 项目=》上传 condition.zip 文件=》执行作业=》观察结果 (6)按照我们设定的条件,JobB 会根据当日日期决定是否执行。

2.2 预定义宏案例

Azkaban 中预置了几个特殊的判断条件,称为预定义宏。 预定义宏会根据所有父 Job
的完成情况进行判断,再决定是否执行。可用的预定义宏如 下:
(1)all_success: 表示父 Job 全部成功才执行(默认)
(2)all_done:表示父 Job 全部完成才执行
(3)all_failed:表示父 Job 全部失败才执行
(4)one_success:表示父 Job 至少一个成功才执行
(5)one_failed:表示父 Job 至少一个失败才执行

1)案例

需求:

  1. JobA 执行一个 shell 脚本
  2. JobB 执行一个 shell 脚本
  3. JobC 执行一个 shell 脚本,要求 JobA、JobB 中有一个成功即可执行
(1)新建 JobA.sh
#!/bin/bash
echo "do JobA"
(2)新建 JobC.sh
#!/bin/bash
echo "do JobC"
(3)新建 macro.flow
nodes:
 - name: JobA
   type: command
   config:
     command: sh JobA.sh
 - name: JobB
   type: command
   config:
     command: sh JobB.sh
 - name: JobCC
   type: command
   dependsOn:
     - JobA
     - JobB
   config:
     command: sh JobC.sh
   condition: one_success
(4)JobA.sh、JobC.sh、macro.flow、azkaban.project 文件,打包成 macro.zip。

注意:没有 JobB.sh。

(5)创建 macro 项目=》上传 macro.zip 文件=》执行作业=》观察结果

2.3 定时执行案例

需求:JobA 每间隔 1 分钟执行一次;
具体步骤:

1)Azkaban 可以定时执行工作流。在执行工作流时候,选择左下角 Schedule

2)右上角注意时区是上海,然后在左面填写具体执行事件,填写的方法和 crontab 配置定时任务规则一致。

3)观察结果


4)删除定时调度

点击 remove Schedule 即可删除当前任务的调度规则。

三、报警案例 1 、邮箱报警 1)申请注册一个 163 邮箱 2)点击邮箱账号=》账号管理 3)开启 SMTP 服务

4)一定要记住授权码

2、 默认邮件报警案例

Azkaban 默认支持通过邮件对失败的任务进行报警,配置方法如下

1 ) 在 azkaban-web 节 点 hadoop102 上 , 编 辑

vi /opt/module/azkaban/azkaban-web/conf/azkaban.properties,修改如下内容:

[atguigu@hadoop102 azkaban-web]$ vi /opt/module/azkaban/azkabanweb/conf/azkaban.properties

添加如下内容:

#这里设置邮件发送服务器,需要 申请邮箱,切开通 stmp 服务,以下只是例子
mail.sender=atguigu@126.com
mail.host=smtp.126.com
mail.user=atguigu@126.com
mail.password=用邮箱的授权码
2)保存并重启 web-server。
[atguigu@hadoop102 azkaban-web]$ bin/shutdown-web.sh
[atguigu@hadoop102 azkaban-web]$ bin/start-web.sh
3)编辑 basic.flow
nodes:
 - name: jobA
   type: command
   config:
    command: echo "This is an email test."
4)将 azkaban.project 和 basic.flow 压缩成 email.zip 5)创建工程=》上传文件=》执行作业=》查看结果



6)观察邮箱,发现执行成功或者失败的邮件

3、 电话报警案例 1、第三方告警平台集成

有时任务执行失败后邮件报警接收不及时,因此可能需要其他报警方式,比如电话报警。 如有类似需求,可与第三方告警平台进行集成,例如睿象云。

1)进入睿象云官网注册账号并登录

官网地址:https://www.aiops.com/

2)集成告警平台,使用 Email 集成


3)获取邮箱地址,后边需将报警信息发送至该邮箱

4)配置分派策略

5) 测试

执行上一个邮件通知的案例,将通知对象改为刚刚集成第三方平台时获取的邮箱。

四、Azkaban 多 Executor 模式注意事项

Azkaban 多 Executor 模式是指,在集群中多个节点部署 Executor。在这种模式下,
Azkaban web Server 会根据策略,选取其中一个 Executor 去执行任务。
为确保所选的 Executor 能够准确的执行任务,我们须在以下两种方案任选其一,推荐使 用方案二。

方案一:指定特定的 Executor(hadoop102)去执行任务。

1)在 MySQL 中 azkaban 数据库 executors 表中,查询 hadoop102 上的 Executor 的 id。
mysql> use azkaban;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop103 | 35985 | 1 |
| 2 | hadoop104 | 36363 | 1 |
| 3 | hadoop102 | 12321 | 1 |
+----+-----------+-------+--------+
3 rows in set (0.00 sec)
2)在执行工作流程时加入 useExecutor 属性,如下

指定id是3的集群

方案二:在 Executor 所在所有节点部署任务所需脚本和应用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5688961.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存