使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)
01
PART
Azkaban進(jìn)階
JavaProcess作業(yè)類型案例
JavaProcess類型可以運(yùn)行一個自定義主類方法,type類型為javaprocess,可用的配置為:
Xms:最小堆 ?96M
Xmx:最大堆 ?200M
java.class:要運(yùn)行的Java對象,其中必須包含Main方法
案例:
1)新建一個azkaban的maven工程
2)創(chuàng)建包名:com.atguigu
3)創(chuàng)建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,內(nèi)容如下
nodes: - name: test_java type: javaprocess config: Xms: 96M Xmx: 200M java.class: com.atguigu.AzTest6)將Jar包、flow文件和project文件打包成javatest.zip?
7)創(chuàng)建項目=》上傳javatest.zip?=》執(zhí)行作業(yè)=》觀察結(jié)果
條件工作流案例
條件工作流功能允許用戶根據(jù)條件指定是否運(yùn)行某些作業(yè)。條件由先前作業(yè)的運(yùn)行時參數(shù)(例如輸出)和預(yù)定義宏組成。在這些條件下,用戶可以在確定作業(yè)執(zhí)行邏輯時獲得更大的靈活性。例如,只要父作業(yè)之一成功,他們就可以運(yùn)行當(dāng)前作業(yè)。他們可以在工作流內(nèi)部實現(xiàn)分支邏輯。
運(yùn)行時參數(shù)案例
1)運(yùn)行時參數(shù)一般指作業(yè)的輸出,使用時有以下幾個條件:
(1)使用?${jobName:param}來定義作業(yè)運(yùn)行時參數(shù)的條件
(2)“:” 用于分隔jobName和參數(shù)
(3)job運(yùn)行時,使用參數(shù)與條件中的字符串或數(shù)字進(jìn)行比較
(4)用戶需要事先將參數(shù)的值寫入$JOB_OUTPUT_PROP_FILE
2)支持的運(yùn)算符:
(1)==等于
(2)!=不等于
(3)>大于
(4)>=大于等于
(5)<小于
(6)<=小于等于
(7)&& 與
(8)||或
(9)!非
3)案例:
需求:
JobA執(zhí)行一個shell腳本;
JobB條件依賴于JobA,當(dāng)JobA中param1的值為“BBB”,執(zhí)行JobB;
JobC也條件依賴于JobA,當(dāng)JobA中param1的值為“CCC”,執(zhí)行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,內(nèi)容為:
echo '{"param1":"BBB"}' > $JOB_OUTPUT_PROP_FILE(3)將write_to_ parameter.sh、basic.flow和azkaban.project打包成parameter.zip
(4)按照我們設(shè)定的條件,由于JobA輸出為BBB,所以會執(zhí)行JobB分支。上傳執(zhí)行,注意觀察分支條件:
預(yù)定義宏案例
預(yù)定義宏將會在所有父作業(yè)上評估,即YAML文件中的dependsOn部分。可用的預(yù)定義宏如下:
(1)all_success: 全部成功(默認(rèn))
(2)all_done:全部完成
(3)all_failed:全部失敗
(4)one_success:至少一個成功
(5)one_failed:至少一個失敗
1)案例
需求:
JobA執(zhí)行一個shell腳本;
JobB條件依賴于JobA,當(dāng)JobA中param1的值為“BBB”,執(zhí)行JobB;
JobC也條件依賴于JobA,當(dāng)JobA中param1的值為“CCC”,執(zhí)行JobC
JobD依賴于JobB、JobC,JobB和JobC有任何一個執(zhí)行成功后,執(zhí)行JobD。
JobE依賴于JobB、JobC,JobB和JobC都執(zhí)行成功,執(zhí)行JobE。
JobF依賴于JobB、JobC、JobD、JobE。JobB、JobC、JobD、JobE都執(zhí)行完了,執(zhí)行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)創(chuàng)建condition項目=》上傳condition.zip文件=》執(zhí)行作業(yè)=》觀察結(jié)果
?定時執(zhí)行案例
需求:JobA每間隔1分鐘執(zhí)行一次;
具體步驟:
1)Azkaban可以定時執(zhí)行工作流。在執(zhí)行工作流時候,選擇左下角Schedule
2)右上角注意時區(qū)是上海,然后在左面填寫具體執(zhí)行事件,填寫的方法和crontab配置定時任務(wù)規(guī)則一致。
3)觀察結(jié)果
4)刪除定時調(diào)度
點(diǎn)擊remove?Schedule即可刪除當(dāng)前任務(wù)的調(diào)度規(guī)則。
郵件報警案例
1)申請注冊一個126郵箱
2)點(diǎn)擊郵箱賬號=》賬號管理
3)開啟SMTP服務(wù)
4)一定要記住授權(quán)碼
默認(rèn)郵件報警案例
Azkaban默認(rèn)支持通過郵件對失敗的任務(wù)進(jìn)行報警,配置方法如下:
1)在azkaban-web節(jié)點(diǎn)hadoop102上,編輯/opt/module/azkaban/azkaban-web/conf/azkaban.properties,修改如下內(nèi)容:
[atguigu@hadoop102 azkaban-web]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban.properties添加如下內(nèi)容:
#這里設(shè)置郵件發(fā)送服務(wù)器,需要 申請郵箱,切開通stmp服務(wù),以下只是例子
mail.sender=atguigu@126.commail.host=smtp.126.commail.user=atguigu@126.commail.password=用郵箱的授權(quán)碼#這里設(shè)置工作流成功或者失敗默認(rèn)向哪里發(fā)送服務(wù)
job.failure.email=atguigu@126.comjob.success.email=atguigu@126.com2)保存并重啟web-server。
[atguigu@hadoop102 azkaban-web]$ bin/shutdown-web.sh[atguigu@hadoop102 azkaban-web]$ bin/start-web.sh3)編輯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.com4)將azkaban.project和basic.flow壓縮成email.zip
5)創(chuàng)建工程=》上傳文件=》執(zhí)行作業(yè)=》查看結(jié)果
6)觀察郵箱,發(fā)現(xiàn)執(zhí)行成功或者失敗的郵件
完
掃碼入群和大佬們一起討論技術(shù)該公眾號開源為大家解決大數(shù)據(jù)企業(yè)級遇到的各種問題,也歡迎各位大佬積極加入開源共享(共同面對大數(shù)據(jù)領(lǐng)域各種老大難問題)
來稿請投郵箱:miaochuanhai@126.com
總結(jié)
以上是生活随笔為你收集整理的使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java定时器参数_Java报表软件定时
- 下一篇: 的写法_朋友圈文案标题的写法