文章是从我CSDN博客扒下来的,所以图片会有csdn水印
https://blog.csdn.net/qq_41489540/article/details/111074075
概述
一个工作流就是一个Project
工作流就是很多的工作串起来就是工作流.
单一Job案例
在本地新建一个job文件
first.job
type=command
command=mkdir /root/jobs/demo
保存之后压缩成job.zip包
开始创建任务
打开Azkaban
https://zjj101:8443/index
任务名字和任务描述随便写
上传任务zip压缩包
选择刚刚自己编写的job文件,打成zip后的包,然后点击Upload开始上传.
点击按钮执行流程
点击执行
显示执行成功
查看效果
发现脚本已经执行成功了, 创建了一个demo文件夹.
[root@zjj101 jobs]# pwd
/root/jobs
[root@zjj101 jobs]# ls
demo
多个Job工作流案例
就是第一个job执行完了第二个job再执行
aaa.job内容:
type=command
command=mkdir /root/jobs/aaa
bbb.job内容:
type=command
dependencies=aaa
command=mkdir /root/jobs/aaa/bbb
重点是dependencies属性,意思是这个job依赖名字为aaa的job
然后两个文件打包到一个zip文件里面, 名字随便起.
创建Azkaban Job过程和单一Job案例一模一样.创建完了下面显示这个,能看到有依赖关系.
然后点击Execute 按钮执行任务,执行过程和单一Job案例的过程是一模一样的.
结果执行完毕
看到效果,已经创建了aaa文件夹,然后在aaa文件夹下面又创建了bbb文件夹.
[root@zjj101 jobs]# ls
aaa
[root@zjj101 jobs]# cd aaa
[root@zjj101 aaa]# ls
bbb
[root@zjj101 aaa]# pwd
/root/jobs/aaa
[root@zjj101 aaa]#
两个Job依赖一个Job
dependencies属性可以写两个.
finish.job内容
type=command
dependencies=step1,step2
command=echo "this is finish job"
调度Java的jar程序
随便创建个Maven项目
写个类
package com.zjj.demo;
import java.io.FileOutputStream;
import java.io.IOException;
public class test01 {
public static void main(String[] args) throws IOException {
// 根据需求编写具体代码
FileOutputStream fos = new FileOutputStream("/root/jobs/output.txt");
fos.write("hello world".getBytes());
fos.close();
}
}
然后Maven package命令打成一个jar包,然后上传到/root/jobs/lib/目录下面
[root@zjj101 lib]# pwd
/root/jobs/lib
[root@zjj101 lib]# ls
demo-1.0-SNAPSHOT.jar
[root@zjj101 lib]#
开始编写配置文件demo.job
demo.job内容:
type=javaprocess
java.class=com.zjj.demo.test01
classpath=/root/jobs/lib/*
说明:
classpath 地址是Linux存放demo-1.0-SNAPSHOT.jar的位置
java.class 是你刚刚编写的Java代码的权限定类名,
写完之后给demo.job压缩成demo.zip文件.然后创建Azkaban任务,创建和启动job流程和单一job案例一模一样的.
然后耐心等待程序执行
查看结果
[root@zjj101 jobs]# ls
lib output.txt
[root@zjj101 jobs]# cat output.txt
hello world[root@zjj101 jobs]#
发现自动生成了一个 output.txt文件,然后里面还有内容.说明程序执行成功了.
HDFS操作任务
操作HDFS其实就是执行Linux命令.创建job和启动job和前面单一job案例是一模一样的.
job文件
type=command
command=/opt/module/hadoop-2.7.2/bin/hadoop fs -mkdir /azkaban
启动MapReduce任务
一般都是自己写成Jar,然后放到一个目录下, 然后用Azkaban去调度.
type=command
command=/opt/module/hadoop-2.7.2/bin/hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wordcount/input /wordcount/output
Hive脚本任务
创建student.txt ,注意内容是tab分隔的.
1 aaa
2 bbb
3 ccc
在hdfs上创建student目录.
将student.txt上传到student目录
编写SQL脚本
student.sql文件内容:
use default;
create table student
(
id int,
name string
) row format delimited fields terminated by '\t';
load data inpath '/student' into table student;
在创建Azkaban任务之前可以
编写hive.job任务文件之前可以先执行命令看看脚本是否写错了.
/root/soft/hive-1.2.1/bin/hive -f "/root/jobs/student.sql"
开始编写hive.job文件:
type=command
command=/root/soft/hive-1.2.1/bin/hive -f "/root/jobs/student.sql"
然后打成zip包之后就开始创建任务并执行任务了,过程和之前单一Job案例一模一样的.
等执行完了之后就会发现default数据库里面有个student表,然后打开这个表之后你就可以发现表里面有数据了.