天天看點

大資料之Azkaban(二):實戰案例實戰案例

記錄之前使用azkaban遇到的情況與問題

文章目錄

  • 實戰案例
    • 單一job案例
    • 多job工作流案例
      • java操作任務
      • HDFS操作任務
      • mapreduce任務
      • Hive腳本任務

實戰案例

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

[[email protected] apps]$ vim start.job

#start.job

type=command

command=touch /opt/module/kangkang.txt
           

第二個job:step1.job依賴start.job

[[email protected] apps]$ vim step1.job

#step1.job

type=command

dependencies=start

command=echo "this is step1 job"
           

第三個job:step2.job依賴start.job

[[email protected] apps]$ vim step2.job

#step2.job

type=command

dependencies=start

command=echo "this is step2 job"
           

第四個job:finish.job依賴step1.job和step2.job

[[email protected] apps]$ vim finish.job

#finish.job

type=command

dependencies=step1,step2

command=echo "this is finish job"


           

2)将所有job資源檔案打到一個zip包中

[[email protected] 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内

[[email protected] azkaban]$ mkdir lib

[[email protected] azkaban]$ cd lib/

[[email protected] 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)檢查結果

繼續閱讀