界面介紹
首頁有四個菜單
- projects:最重要的部分,創建一個工程,所有flows將在工程中運行。
- scheduling:顯示定時任務
- executing:顯示當前運行的任務
- history:顯示歷史運行任務
介紹projects部分
概念介紹
創建工程:創建之前我們先了解下之間的關系,一個工程包含一個或多個flows,一個flow包含多個job。job是你想在azkaban中運行的一個進程,可以是簡單的linux命令,可是java程序,也可以是復雜的shell腳本,當然,如果你安裝相關插件,也可以運行插件。一個job可以依賴於另一個job,這種多個job和它們的依賴組成的圖表叫做flow。
1、Command 類型單一 job 示例
(1)首先創建一個工程,填寫名稱和描述
(2)點擊創建之后
Flows:工作流程,有多個job組成
Permissions:權限管理
Project Logs:工程日志
(3)job的創建
創建job很簡單,只要創建一個以.job結尾的文本文件就行了,例如我們創建一個工作,用來打印hello,名字叫做command.job
#command.job
type=command
command=echo 'hello'
一個工程不可能只有一個job,我們現在創建多個依賴job,這也是采用azkaban的首要目的。
(4)將 job 資源文件打包
注意:只能是zip格式
(5)通過 azkaban web 管理平台創建 project 並上傳壓縮包
2、Command 類型多 job 工作流 flow
(1)創建項目
我們說過多個jobs和它們的依賴組成flow。怎么創建依賴,只要指定dependencies參數就行了。比如導入hive前,需要進行數據清洗,數據清洗前需要上傳,上傳之前需要從ftp獲取日志。
定義5個job:
1、o2o_2_hive.job:將清洗完的數據入hive庫
2、o2o_clean_data.job:調用mr清洗hdfs數據
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
# 執行sh腳本,建議這樣做,后期只需維護腳本就行了,azkaban定義工作流程
command=sh /job/o2o_2_hive.sh
dependencies=o2o_clean_data
o2o_clean_data.job
type=command
# 執行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 +相應命令
(2)上傳
點擊o2o_2_hive進入流程,azkaban流程名稱以最后一個沒有依賴的job定義的。
右上方是配置執行當前流程或者執行定時流程。
說明
Flow view:流程視圖。可以禁用,啟用某些job
Notification:定義任務成功或者失敗是否發送郵件
Failure Options:定義一個job失敗,剩下的job怎么執行
Concurrent:並行任務執行設置
Flow Parametters:參數設置。
(3)執行一次
設置好上述參數,點擊execute。
綠色代表成功,藍色是運行,紅色是失敗。可以查看job運行時間,依賴和日志,點擊details可以查看各個job運行情況。
(4)執行定時任務
這時候注意到cst了吧,之前需要將配置中時區改為Asia/shanghai。
可以選擇"天/時/分/月/周"等執行頻率。
可以查看下次執行時間。
3、操作 MapReduce 任務
(1)創建 job 描述文件
mapreduce_wordcount.job
# mapreduce_wordcount.job
type=command
dependencies=mapreduce_pi
command=/home/hadoop/apps/hadoop-2.7.5/bin/hadoop jar /home/hadoop/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /wordcount/input /wordcount/output_azkaban
mapreduce_pi.job
# mapreduce_pi.job
type=command
command=/home/hadoop/apps/hadoop-2.7.5/bin/hadoop jar /home/hadoop/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar pi 5 5
(2)創建 project 並上傳 zip 包
(3)啟動執行
4、Hive 腳本任務
(1) 創建 job 描述文件和 hive 腳本
Hive 腳本如下
test.sql
create database if not exists azkaban; use azkaban; drop table if exists student; create table student(id int,name string,sex string,age int,deparment string) row format delimited fields terminated by ','; load data local inpath '/home/hadoop/student.txt' into table student; create table student_copy as select * from student; insert overwrite directory '/aztest/hiveoutput' select count(1) from student_copy; !hdfs dfs -cat /aztest/hiveoutput/000000_0; drop database azkaban cascade;
Job 描述文件:
hivef.job
# hivef.job type=command command=/home/hadoop/apps/apache-hive-2.3.3-bin/bin/hive -f 'test.sql'
(2)將所有 job 資源文件打到一個 zip 包中
(3)在 azkaban 的 web 管理界面創建工程並上傳 zip 包
5、啟動 job