摘要:使用建立一個簡單的任務調度系統可以作為任務的調度工具,也可以作為任務和任務的調度工具。更加方便,只要在中增加一個方法,返回對象,然后任務可以直接在初始化的中讀取到這個參數。
使用azkaban 建立一個簡單的任務調度系統
azkaban 可以作為hadoop 任務的調度工具,也可以作為shell任務和java任務的調度工具。安裝過程有點繁瑣,見安裝文檔。
Job Type見鏈接 http://www.itwendao.com/artic...
任務DAG通過任務之間的依賴關系(dependencies)構建DAG
下面是一個 upload.job 的例子, 依賴 report-en.job
type=java #指定類的全路徑 job.class=com.example.demo.task.BbUploadJob #指定執行jar包的路徑 classpath=lib/* #依賴任務 dependencies=report-en #jvm 參數 Xmx=512M # 自定義參數 batch.timestamp=${azkaban.flow.start.timestamp}schedule
azkaban 目前包含Quartz,支持 Cron 表達式
java jobJavaJob 目前需要配置Hadoop,但是可以通過修改源代碼來去掉 Hadoop 的依賴關系,參考安裝過程。
Java Job template
run 相當于 main 方法,任務代碼寫在這里
cancel 在 run 方法出現 Exception 之后調用,任務失敗后處理
getJobGeneratedProperties 是輸出的參數,用于給下一個任務傳遞參數
import azkaban.utils.Props; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class JavaJob1 { private static final Logger logger = LoggerFactory.getLogger(JavaJob1.class); private Props props; public JavaJob1(String name, Props props) { this.props = props; } public void run() { String timestamp = props.getString("azkaban.flow.start.timestamp"); logger.info("timestamp value is ==> " + timestamp); } public void cancel(){ } public Props getJobGeneratedProperties(){ Props props = new Props(); return props; } }java job 中使用 Spring
在JavaJob 中可以使用Spring,和普通的Java代碼一模一樣
this.classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); this.reportService = (ReportService) this.classPathXmlApplicationContext.getBean("reportService");其他問題 郵件通知
azkaban 原生就支持通知功能,在安裝的時候配置smtp服務器,在job文件中里配置failure.emails, success.emails, notify.emails 來通知任務執行情況(多個郵箱地址用逗號分隔)
任務之間參數傳遞azkaban支持任務之間傳遞參數,A任務可以向依賴A的任務B傳遞參數。實際上是通過讀寫臨時文件來實現這個功能。
System.getenv("JOB_OUTPUT_PROP_FILE") // 任務輸出的參數文件 System.getenv("JOB_PROP_FILE") // 任務初始化的參數文件
B任務初始化的參數文件中會包含A任務輸出的參數,這是azkaban幫我們做的。
JavaJob 更加方便,只要在Job中增加一個getJobGeneratedProperties方法,返回Props對象,然后B任務可以直接在初始化的Props中讀取到這個參數。
public Props getJobGeneratedProperties(){ Props props = new Props(); props.put("demo.test.arg1", "Hello World!"); return props; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67963.html
工作流調度系統一個完整的數據分析系統大都是由海量的任務單元組成shell腳本程序,java,mapreduce程序、hive腳本等等組成,非常復雜,各任務單元之間存在時間先后及前后依賴關系。為了很好地組織起這樣的復雜系統,能夠按照計劃執行,就必須要一個工作流調度系統來調度執行。例如,某個業務系統可能每天產生20G原始數據,我們每天都要對其進行處理。具體處理步驟如下所示:1. 通過Hadoop先將原...
摘要:顯然,這單獨執行不起作用這將通過子操作符被作為像是自己的調度任務中那樣運行。子也必須有個可用調度即使子作為其父的一部分被觸發子也必須有一個調度如果他們的調度是設成,這個子操作符將不會觸發任何任務。這兩個例子都是緣起子操作符被當做了回填工作。 showImg(https://segmentfault.com/img/remote/1460000006768714); 前言 Airbnb的...
摘要:概述是一個我們正在用的工作流調度器,相對于傳統的任務管理,很好的為我們理清了復雜的任務依賴關系監控任務執行的情況。步驟三修改默認數據庫找到配置文件修改配置注意到,之前使用的的方式是行不通的。微信號商業使用請聯系作者。 showImg(https://segmentfault.com/img/remote/1460000006760428?w=1918&h=1556); 概述 Airfl...
摘要:否則沒有配置環境會報錯。重新編譯打包就可以 azkaban azkaban 是一個用Java開發的開源調度工具workflow,同類型的工具有用Python開發的 airflow 和 luigi. build 在我的windows上無法build成功,我在CentOS上build成功了 git clone https://github.com/azkaban/azkaban.git c...
閱讀 1261·2021-09-02 13:36
閱讀 2714·2019-08-30 15:44
閱讀 2972·2019-08-29 15:04
閱讀 3193·2019-08-26 13:40
閱讀 3643·2019-08-26 13:37
閱讀 1172·2019-08-26 12:22
閱讀 1003·2019-08-26 11:36
閱讀 1214·2019-08-26 10:41