大数据之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)检查结果

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