使用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 =》执行作业=》观察结果

4fe034afd28dc66dbfdb431bb6a59501.png

8aa78e0491d0ac4ea76cde7e830941b7.png

9b4faf4a56315c3a00d023e256d952ac.png

345c727cd593e6f22ec739ce5d7566b6.png

条件工作流案例

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

运行时参数案例

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

85adbfa5b48e69e032868090f82b301a.png

fc943b3eea352689d6416e12dfe59392.png

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

1fcf614642b300b5d7b440ca843883c8.png

预定义宏案例

预定义宏将会在所有父作业上评估,即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文件=》执行作业=》观察结果

3207665b1a360b9528a7b4f820498b7c.png

624f9a5b0479cd3fff681a09711c0d45.png

f7eeb59b6a0c1235344f80104d0dfb5c.png

 定时执行案例

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

具体步骤:

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

f86e3d5d02c58e6d8f0f7513f2db26eb.png

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

e830f3932fd4baf2b924608de18ff79a.png

7c7128f59349c32ac5c388444e9114de.png

3)观察结果

5ba3c84f180719282d81561ca96023ef.png

5e5a1f08e8296fd0a054d223ca9fc910.png

4)删除定时调度

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

c4978dd2556b479c1b096f5036eaa011.png

邮件报警案例

1)申请注册一个126邮箱

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

c0513e02f9bda11cb33a98b39a74ecbe.png

3)开启SMTP服务

276abfd87ef88d500e5db59ef2caa445.png

4)一定要记住授权码

7d8eea9a510f0fcc61d8c800a1dfe5ba.png

默认邮件报警案例

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)创建工程=》上传文件=》执行作业=》查看结果

469dbff51dfd8113c4c9535c7aea59a4.png

413bb9c54ef0d69013ab84edd7195708.png

a74b4103e37ed554c58ad6102c3ecc93.png

413bb9c54ef0d69013ab84edd7195708.png

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

759ae6646be079c709240413308b62c8.png

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

eeecb47b4f34de70b16c7bb11c5240f0.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值