記錄之前使用azkaban遇到的情況與問題
實戰案例
Azkaba內置的任務類型支持command、java
單一job案例
-
創建job描述文件:必須命名爲.job
#mym-first.job type=command command=echo 'this is my first job'
注意:命令行類型的job,type指定爲command。command編寫的是需要執行的命令行
注意:文件名稱就是job名,必須唯一
-
將.job文件打包成zip(只支持xxx.zip)
-
通過web平臺創建一個project,並上傳zip包
-
啓動:點擊執行工作流
-
而後可以在web上看到執行成功和時間線以及日誌
多job工作流案例
1)創建有依賴關係的多個job描述
第一個job:start.job
[root@mym apps]$ vim start.job
#start.job
type=command
command=touch /opt/module/kangkang.txt
第二個job:step1.job依賴start.job
[root@mym apps]$ vim step1.job
#step1.job
type=command
dependencies=start
command=echo "this is step1 job"
第三個job:step2.job依賴start.job
[root@mym apps]$ vim step2.job
#step2.job
type=command
dependencies=start
command=echo "this is step2 job"
第四個job:finish.job依賴step1.job和step2.job
[root@mym apps]$ vim finish.job
#finish.job
type=command
dependencies=step1,step2
command=echo "this is finish job"
2)將所有job資源文件打到一個zip包中
[root@mym apps]$ zip jobs.zip start.job step1.job step2.job finish.job
updating: start.job (deflated 16%)
adding: step1.job (deflated 12%)
adding: step2.job (deflated 12%)
adding: finish.job (deflated 14%)
3)create project然後upload
4)execute
可以看到graph和執行結果
java操作任務
使用Azkaban調度java程序
(1)編寫調度程序
import java.io.IOException;
public class AzkabanTest {
public void run() throws IOException {
// 根據需求編寫具體代碼
FileOutputStream fos = new FileOutputStream("/home/mym/apps/azkaban/output.txt");
fos.write("this is a java progress".getBytes());
fos.close();
}
public static void main(String[] args) throws IOException {
AzkabanTest azkabanTest = new AzkabanTest();
azkabanTest.run();
}
}
(2)將java程序打成jar包,創建lib目錄,將jar放入lib內
[root@mym azkaban]$ mkdir lib
[root@mym azkaban]$ cd lib/
[root@mym lib]$ ll
總用量 1
-rw-rw-r--. 1 root root 3355 1月 19 20:55 azkaban-0.0.1-SNAPSHOT.jar
(3)編寫調度配置
vim azkabanJava.job
#azkabanJava.job
type=javaprocess
java.class=com.mym.practice.azkaban.AzkabanTest
classpath=/home/mym/apps/azkaban/lib/*
(4)打成zip
(5)web上create project並upload然後execute
(6)檢查結果
HDFS操作任務
(1)編寫調度配置
vim fs.job
#hdfs job
type=command
command=hadoop fs -mkdir /azkaban
(2)打成zip
(3)web上create project並upload然後execute
(4)檢查結果
mapreduce任務
(1)編寫調度配置
vim mr.job
#mr job
type=command
command=hadoop jar /home/mym/apps/hadoop-2.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /test/wordcount/input /test/wordcount/output
(2)打成zip
(3)web上create project並upload然後execute
(4)檢查結果
Hive腳本任務
(0)編寫hive腳本
vim student_azkaban.sql
use default;
drop table student;
create table student(id int, name string)
row format delimited fields terminated by '\t';
load data local inpath '/home/mym/apps/datas/student.txt' into table student;
insert overwrite local directory '/home/mym/apps/datas/student'
row format delimited fields terminated by '\t'
select * from student;
其中student.txt內容
1 stu1
2 stu2
(1)編寫調度配置
vim hive.job
#hive job
type=command
command=/home/mym/apps/hive/bin/hive -f /home/mym/apps/azkaban/jobs/student.sql
(2)打成zip
(3)web上create project並upload然後execute
(4)檢查結果