1.Azkaban 簡介
- azkaban是一個開源的任務調度系統,用於負責的調度運行(如數據倉庫調度),用以替代Linux中的crontab。
- Azkaban是一套簡單的任務調度服務,整體包括三個部分webserver、dbserver、executorserver
- Azkaban是linux的開源項目,開發語言為Java。
- Azkaban是由Linkedin開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程
- Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,並提供一個易於使用的web用戶界面維護和跟蹤你的工作流
1.1使用場景
當有一個大job,由4個小job構成,這4個job分別為jobA,jobB,jobC,jobD。其中jobB和jobC依賴於jobA,jobD依賴於jobB和jobC的結果如下圖所示
2.常用工作流對比
Oozie:重量級的,不推薦使用,開發需要寫一堆XML配置,非常麻煩
Azkzban:輕量級的,推薦使用,具有很好的WEBBUI交互設計,但是也是比較難用的,部分功能需要自定義開發,如無短信通知功能。
3.安裝Azkabab
安裝以3.57.0版本的Azkaban需要有jdk1.8、gradle、git環境,gradle是類似於maven的jar依賴的管理工具。
3.1下載
- 進入官網 官網地址:https://azkaban.github.io/ 按照下圖的箭頭指示下載
- 這兩個你下載那一個都可以
3.2下載gradle: 官網地址
- 選擇你想用的版本,並點擊complete下載
3.3把Azkaba的安裝包和gradle的安裝包上傳到你的linux,並且解壓
[root@hadoop001 software]# pwd /root/software [root@hadoop001 software]# ll -rw-r--r-- 1 root root 132768903 May 14 10:08 gradle-5.4.1-all.zip [root@hadoop001 software]# unzip gradle-5.4.1-all.zip [root@hadoop001 software]# ll drwxr-xr-x 9 root root 4096 Feb 1 1980 gradle-5.4.1 ##解壓目錄沒有太多要求 解壓Azkaban tar -zxvf /home/hadoop/sourcecode/azkaban-3.57.0.tar.gz -C /home/hadoop/app/
3.4安裝git
yunm install -y git
3.5編譯Azkaban
./gradlew build installDist -x test ##-test是跳過測試 降低編譯時間 [hadoop@hadoop001 azkaban-3.57.0]# ./gradlew build installDist -x test
如果按照以上步驟來,基本上編譯不會報錯,所有的包都要保證是從官網下載的
如果有報錯可以參考一下這個博客:https://blog.csdn.net/qq_32641659/article/details/90217430#1WorkFlow_1
3.6編譯成功以后,查看部署包
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz為單機部署的包 [hadoop@hadoop001 azkaban-3.57.0]$ cd azkaban-solo-server/build/distributions/ [hadoop@hadoop001 distributions]$ ll total 46752 -rw-rw-r--. 1 hadoop hadoop 23870855 May 2 20:10 azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -rw-rw-r--. 1 hadoop hadoop 24001502 May 2 20:10 azkaban-solo-server-0.1.0-SNAPSHOT.zip [hadoop@hadoop001 distributions]$ mv azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /home/hadoop/app/ [hadoop@hadoop001 distributions]$ cd /home/hadoop/app/ [hadoop@hadoop001 app]$ tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ~/app/
4啟動
4.1注意要在安裝目錄啟動,踩坑
[hadoop@hadoop001 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/start-solo.sh [hadoop@hadoop001 azkaban-solo-server-0.1.0-SNAPSHOT]$ jps 19345 AzkabanSingleServer 19362 Jps
4.2關閉命令
[hadoop@hadoop001 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/shutdown-solo.sh
4.3編輯配置文件
[root@hadoop001 conf]# pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT/conf
total 8
-rw-rw-r-- 1 root root 2001 May 16 10:11 azkaban.properties
-rw-rw-r-- 1 root root 361 May 16 09:02 azkaban-users.xml
-rw-rw-r-- 1 root root 0 Sep 5 2018 global.properties
[root@hadoop001 conf]# vim azkaban-users.xml
# 添加用於登錄的admin用戶
<user password="123456" roles="admin" username="itocean"/>
[root@hadoop001 conf]#vim azkaban.properties
# 修改
azkaban.name
azkaban.label
看你心情想修改成啥就修改成啥
5啟動
# 不要進入bin目錄執行,否則會找找不到相應的配置 ./bin/start-solo.sh
6查看日志
tail -f local/azkaban-webserver.log

7查看Web界面
http://hadoop001:8081/
##8081是默認端口號

8.創建項目
9.創建一個簡單flow
一個flow是由.project以及.flow兩個文件構成
- 編輯flow20.project文件
azkaban-flow-version: 2.0
- 編輯basic.flow,basic則是flow的名稱配置具體作業信息,作業名jobA,作業的類型命令,作業配置,執行的命令
nodes:
- name: jobA
type: command
config:
command: touch /tmp/job1.txt
10.查看執行結果
可以看到已經創建了job1.txt文件
11.依賴作業的模式
創建basic.flow,寫入以下內容
nodes:
- name: jobC
type: noop
# jobC depends on jobA and jobB
dependsOn:
- jobA
- jobB
- name: jobA
type: command
config:
command: echo "This is an echoed text."
- name: jobB
type: command
config:
command: pwd
同上一樣把flow20.project和basic.flow一起打zip包並創建新的項目上傳zip包
執行后得到,從圖中可以看到jobC依賴於jobA和jobB
參考博客:https://www.cnblogs.com/shujuxiong/p/9116394.html