目錄
Azkaban使用實例
Azkaba內置的任務類型支持command、java。
單一job案例
針對於不存在依賴的單一任務需求。
(1)創建job文件:
[root@bigdata111 opt]# vi test1.job
#test1.job
type=command
command=mkdir -p /opt/azkaban_test
command.1=touch /opt/azkaban_test/test1_result.txt
command.2=echo 'test1_result' >> test1_result.txt
(2)將job文件打包成zip文件
目前,Azkaban上傳的工作流文件只支持xxx.zip文件。zip應包含xxx.job運行作業所需的文件和任何文件(文件名後綴必須以.job結尾,否則無法識別)。作業名稱在項目中必須是唯一的。
(3)通過azkaban的web平臺創建project,並且上傳job中的zip包
創建工程:
上傳zip包
執行工作流
設置2分鐘後執行job,
之後我們可以看到
結果:
多job工作流案例
創建有依賴關係的多個job描述。
(1)創建job1描述
#將test1_result上傳到HDFS
type=command
command= hdfs dfs -put /opt/azkaban_test/test1_result.txt /
(2)job2,依賴於job1
##詞頻分析
type=command
command=hadoop jar /opt/module/hadoop-2.8.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /test1_result.txt /test2_result
dependencies=test2_1
(3)打包上傳並運行
結果:
java操作任務
azkaban也支持java程序,但是需要將其打成jar包,然後壓縮成zip格式上傳。
(1)編寫java程序
import java.io.FileOutputStream;
import java.io.IOException;
public class AzkabanTest {
public void run() throws IOException {
// 根據需求編寫具體代碼
FileOutputStream fos = new FileOutputStream("/opt/module/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包,編寫job文件
#azkabanJava.job
type=javaprocess
java.class=AzkabanTest(全類名)
classpath=/opt/module/azkaban/lib/*
(3)壓縮後上傳。
Hadoop操作任務
其實在多job任務中已經使用了hadoop命令,步驟參上。
Hive腳本任務
(1)創建job描述文件和hive腳本
#Hive腳本
use default;
drop table student;
create table student(id int, name string)
row format delimited fields terminated by '\t';
load data local inpath '/opt/module/datas/student.txt' into table student;
insert overwrite local directory '/opt/module/datas/student'
row format delimited fields terminated by '\t'
select * from student;
(2)編寫job命令
#hive job
type=command
command=/opt/module/hive/bin/hive -f /opt/module/azkaban/jobs/student.sql
(3)壓縮並上傳。