记录之前使用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)检查结果