欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)

发布时间:2025/3/15 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用java代码发送zip文件到邮箱_Azkaban安装与使用(下) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

01

PART

Azkaban进阶

JavaProcess作业类型案例

JavaProcess类型可以运行一个自定义主类方法,type类型为javaprocess,可用的配置为:

Xms:最小堆  96M

Xmx:最大堆  200M

java.class:要运行的Java对象,其中必须包含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: com.atguigu.AzTest

6)将Jar包、flow文件和project文件打包成javatest.zip 

7)创建项目=》上传javatest.zip =》执行作业=》观察结果

条件工作流案例

条件工作流功能允许用户根据条件指定是否运行某些作业。条件由先前作业的运行时参数(例如输出)和预定义宏组成。在这些条件下,用户可以在确定作业执行逻辑时获得更大的灵活性。例如,只要父作业之一成功,他们就可以运行当前作业。他们可以在工作流内部实现分支逻辑。

运行时参数案例

1)运行时参数一般指作业的输出,使用时有以下几个条件:

(1)使用 ${jobName:param}来定义作业运行时参数的条件

(2)“:” 用于分隔jobName和参数

(3)job运行时,使用参数与条件中的字符串或数字进行比较

(4)用户需要事先将参数的值写入$JOB_OUTPUT_PROP_FILE

2)支持的运算符:

(1)==等于

(2)!=不等于

(3)>大于

(4)>=大于等于

(5)<小于

(6)<=小于等于

(7)&& 与

(8)||或

(9)!非

3)案例:

需求:

JobA执行一个shell脚本;

JobB条件依赖于JobA,当JobA中param1的值为“BBB”,执行JobB;

JobC也条件依赖于JobA,当JobA中param1的值为“CCC”,执行JobC

(1)新建basic.flow

nodes: - name: JobA type: command config: command: sh write_to_parameter.sh - name: JobB type: command dependsOn: - JobA config: command: echo "This is JobB." condition: ${JobA:param1} == "BBB" - name: JobC type: command dependsOn: - JobA config: command: echo "This is JobC." condition: ${JobA:param1} == "CCC"

(2)新建write_to_parameter.sh,内容为:

echo '{"param1":"BBB"}' > $JOB_OUTPUT_PROP_FILE

(3)将write_to_ parameter.sh、basic.flow和azkaban.project打包成parameter.zip

(4)按照我们设定的条件,由于JobA输出为BBB,所以会执行JobB分支。上传执行,注意观察分支条件:

预定义宏案例

预定义宏将会在所有父作业上评估,即YAML文件中的dependsOn部分。可用的预定义宏如下:

(1)all_success: 全部成功(默认)

(2)all_done:全部完成

(3)all_failed:全部失败

(4)one_success:至少一个成功

(5)one_failed:至少一个失败

1)案例

需求:

JobA执行一个shell脚本;

JobB条件依赖于JobA,当JobA中param1的值为“BBB”,执行JobB;

JobC也条件依赖于JobA,当JobA中param1的值为“CCC”,执行JobC

JobD依赖于JobB、JobC,JobB和JobC有任何一个执行成功后,执行JobD。

JobE依赖于JobB、JobC,JobB和JobC都执行成功,执行JobE。

JobF依赖于JobB、JobC、JobD、JobE。JobB、JobC、JobD、JobE都执行完了,执行JobF。

(1)修改上个案例的basic.flow

nodes: - name: JobA type: command config: command: sh write_to_parameter.sh - name: JobB type: command dependsOn: - JobA config: command: echo "This is JobB." condition: ${JobA:param1} == "BBB" - name: JobC type: command dependsOn: - JobA config: command: echo "This is JobC." condition: ${JobA:param1} == "CCC" - name: JobD type: command dependsOn: - JobB - JobC config: command: echo "This is JobD." condition: one_success - name: JobE type: command dependsOn: - JobB - JobC config: command: echo "This is JobE." condition: all_success - name: JobF type: command dependsOn: - JobB - JobC - JobD - JobE config: command: echo "This is JobF." condition: all_done

(2)basic.flow、azkaban.project和write_to_parameter.sh文件,打包成condition.zip。

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

 定时执行案例

需求:JobA每间隔1分钟执行一次;

具体步骤:

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

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

3)观察结果

4)删除定时调度

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

邮件报警案例

1)申请注册一个126邮箱

2)点击邮箱账号=》账号管理

3)开启SMTP服务

4)一定要记住授权码

默认邮件报警案例

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

1)在azkaban-web节点hadoop102上,编辑/opt/module/azkaban/azkaban-web/conf/azkaban.properties,修改如下内容:

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

添加如下内容:

#这里设置邮件发送服务器,需要 申请邮箱,切开通stmp服务,以下只是例子

mail.sender=atguigu@126.commail.host=smtp.126.commail.user=atguigu@126.commail.password=用邮箱的授权码

#这里设置工作流成功或者失败默认向哪里发送服务

job.failure.email=atguigu@126.comjob.success.email=atguigu@126.com

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." failure.emails: atguigu@126.com success.emails: atguigu@126.com notify.emails: atguigu@126.com

4)将azkaban.project和basic.flow压缩成email.zip

5)创建工程=》上传文件=》执行作业=》查看结果

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

扫码入群和大佬们一起讨论技术

该公众号开源为大家解决大数据企业级遇到的各种问题,也欢迎各位大佬积极加入开源共享(共同面对大数据领域各种老大难问题)

来稿请投邮箱:miaochuanhai@126.com

总结

以上是生活随笔为你收集整理的使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。