大數據之Azkaban(二):實戰案例

記錄之前使用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)檢查結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章