Azkaban-開源任務調(diào)度程序(使用篇)

上篇文章說到了安裝,這次說說使用

登錄

https://localhost:8443
注意是https,采用的是jetty ssl鏈接。輸入賬號密碼azkaban/azkanban(如果你之前沒有更改的話)

首頁

首頁有四個菜單

  • projects:最重要的部分,創(chuàng)建一個工程,所有flows將在工程中運行。
  • scheduling:顯示定時任務
  • executing:顯示當前運行的任務
  • history:顯示歷史運行任務

主要介紹projects部分
首先創(chuàng)建一個工程,填寫名稱和描述,比如o2olog。

o2olog工程

Flows:工作流程,有多個job組成
Permissions:權限管理
Project Logs:工程日志

創(chuàng)建工程:

創(chuàng)建之前我們先了解下之間的關系,一個工程包含一個或多個flows,一個flow包含多個job。job是你想在azkaban中運行的一個進程,可以是簡單的linux命令,可是java程序,也可以是復雜的shell腳本,當然,如果你安裝相關插件,也可以運行插件。一個job可以依賴于另一個job,這種多個job和它們的依賴組成的圖表叫做flow。

job創(chuàng)建

創(chuàng)建job很簡單,只要創(chuàng)建一個以.job結尾的文本文件就行了,例如我們創(chuàng)建一個工作,用來將日志數(shù)據(jù)導入hive中(關于大數(shù)據(jù)方面的東西,不在重復,可以理解為,將日志所需數(shù)據(jù)導入的mysql中),我們創(chuàng)建o2o_2_hive.job

type=command
command=echo "data 2 hive"

一個簡單的job就創(chuàng)建好了,解釋下,type的command,告訴azkaban用unix原生命令去運行,比如原生命令或者shell腳本,當然也有其他類型,后面說。

一個工程不可能只有一個job,我們現(xiàn)在創(chuàng)建多個依賴job,這也是采用azkaban的首要目的。

flows創(chuàng)建

我們說過多個jobs和它們的依賴組成flow。怎么創(chuàng)建依賴,只要指定dependencies參數(shù)就行了。比如導入hive前,需要進行數(shù)據(jù)清洗,數(shù)據(jù)清洗前需要上傳,上傳之前需要從ftp獲取日志。
定義5個job:

  1. o2o_2_hive.job:將清洗完的數(shù)據(jù)入hive庫
  2. o2o_clean_data.job:調(diào)用mr清洗hdfs數(shù)據(jù)
  3. o2o_up_2_hdfs.job:將文件上傳至hdfs
  4. o2o_get_file_ftp1.job:從ftp1獲取日志
  5. o2o_get_file_fip2.job:從ftp2獲取日志

依賴關系:
3依賴4和5,2依賴3,1依賴2,4和5沒有依賴關系。

o2o_2_hive.job

type=command
# 執(zhí)行sh腳本,建議這樣做,后期只需維護腳本就行了,azkaban定義工作流程
command=sh /job/o2o_2_hive.sh
dependencies=o2o_clean_data

o2o_clean_data.job

type=command
# 執(zhí)行sh腳本,建議這樣做,后期只需維護腳本就行了,azkaban定義工作流程
command=sh /job/o2o_clean_data.sh
dependencies=o2o_up_2_hdfs

o2o_up_2_hdfs.job

type=command
#需要配置好hadoop命令,建議編寫到shell中,可以后期維護
command=hadoop fs -put /data/*
#多個依賴用逗號隔開
dependencies=o2o_get_file_ftp1,o2o_get_file_ftp2

o2o_get_file_ftp1.job

type=command
command=wget "ftp://file1" -O /data/file1

o2o_get_file_ftp2.job

type=command
command=wget "ftp:file2" -O /data/file2

可以運行unix命令,也可以運行python腳本(強烈推薦)。將上述job打成zip包。
ps:為了測試流程,我將上述command都改為echo +相應命令

上傳:

上傳
上傳完成

點擊o2o_2_hive進入流程,azkaban流程名稱以最后一個沒有依賴的job定義的。

流程

右上方是配置執(zhí)行當前流程或者執(zhí)行定時流程。

流程執(zhí)行

Flow view:流程視圖??梢越?,啟用某些job
Notification:定義任務成功或者失敗是否發(fā)送郵件
Failure Options:定義一個job失敗,剩下的job怎么執(zhí)行
Concurrent:并行任務執(zhí)行設置
Flow Parametters:參數(shù)設置。

1.執(zhí)行一次
設置好上述參數(shù),點擊execute。

執(zhí)行成功

綠色代表成功,藍色是運行,紅色是失敗??梢圆榭磈ob運行時間,依賴和日志,點擊details可以查看各個job運行情況。

jobList

2.定時執(zhí)行

定時執(zhí)行

這時候注意到cst了吧,之前需要將配置中時區(qū)改為Asia/shanghai。
可以選擇"天/時/分/月/周"等執(zhí)行頻率。

定時任務

可以查看下次執(zhí)行時間。

其他job配置選項

  • 可以定義job依賴另一個flow,配置

type=flow
flow.name=fisrt_flow

  • 可以設置每個job中子命令

type=command
command=echo "hello"
command.1=echo "world"

  • 可以配置job失敗重啟次數(shù),及間隔時間,比如,上述ftp獲取日志,我可以配置重試12次,每隔5分鐘一次。

type=command
command=wget "ftp://file1" -O /data/file1
retries=12
#單位毫秒
retry.backoff=300000

azkaban還有很多強大的功能,如它開放了相關api,我們將它可以嵌入到自己的app等等,有興趣的朋友可以研究。

至此,azkaban學習到此結束,本人也是初學者,如果問題,歡迎指正。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容