使用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.AzTest6)將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.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)創建工程=》上傳文件=》執行作業=》查看結果
6)觀察郵箱,發現執行成功或者失敗的郵件
完
掃碼入群和大佬們一起討論技術該公眾號開源為大家解決大數據企業級遇到的各種問題,也歡迎各位大佬積極加入開源共享(共同面對大數據領域各種老大難問題)
來稿請投郵箱:miaochuanhai@126.com
總結
以上是生活随笔為你收集整理的使用java代码发送zip文件到邮箱_Azkaban安装与使用(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java定时器参数_Java报表软件定时
- 下一篇: 的写法_朋友圈文案标题的写法