一、HelloWorld 案例
在 windows 环境,新建 azkaban.project 文件,编辑内容如下
azkaban-flow-version: 2.0
注意:该文件作用,是采用新的 Flow-API 方式解析 flow 文件。
新建 basic.flow 文件,内容如下
nodes:
- name: jobA
type: command
config:
command: echo "Hello World"
(1)Name:job 名称(2)Type:job 类型。command 表示你要执行作业的方式为命令(3)Config:job 配置
将 azkaban.project、basic.flow 文件压缩到一个 zip 文件,文件名称必须是英文。如:helloworld.zip
在 WebServer 新建项目:http://hadoop100:8091/index
给项目名称命名和添加项目描述
first.zip 文件上传
选择上传的文件
执行任务流
在日志中,查看运行结果
思考:执行HDFS命令创建文件夹怎么做?
nodes:
- name: jobA
type: command
config:
command: hadoop fs -mkdir /azkaban
思考:执行MapReduce任务怎么做?
nodes:
- name: jobA
type: command
config:
command: hadoop jar hadoop-mapreduce-examples-3.2.0.jar wordcount /wordcount/input /wordcount/output
同时将 hadoop-mapreduce-examples-3.2.0.jar包一起打进去
思考:执行Hive脚本怎么操作?
先创建Hive脚本,test.sql文件
use default;
drop table aztest;
create table aztest(id int,name string) row format delimited fields terminated by ',';
load data inpath '/aztest/hiveinput' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;
command内容为
nodes:
- name: jobA
type: command
config:
command: hive -f 'test.sql'
二、作业依赖案例
需求:JobA 和 JobB 执行完了,才能执行 JobC
具体步骤:1)修改 basic.flow 为如下内容
nodes:
- name: jobC
type: command
# jobC依赖jobB和jobA
dependsOn:
- jobA
- jobB
config:
command: echo "this is C"
- name: jobA
type: command
config:
command: echo "this is A"
- name: jobB
type: command
config:
command: echo "this is B"
(1)dependsOn:作业依赖,后面案例中演示
(2) 将修改后的 basic.flow 和 azkaban.project 压缩成 second.zip 文件
(3) 重复一HelloWorld 后续步骤。
三、 Java作业类型案例
JavaProcess 类型可以运行一个自定义主类方法,type 类型为 javaprocess,可用的配置为:
-
Xms:最小堆
-
Xmx:最大堆
-
classpath:类路径
-
java.class:要运行的 Java 对象,其中必须包含 Main 方法
-
main.args:main 方法的参数
案例:
1)新建一个 prjazkaban 的 maven 工程
2)创建包名:com.soft863
3)创建AzTest类
package com.soft863;
public class AzTest {
public static void main(String[] args) {
System.out.println("This is for testing!");
}
}
4)打包成 jar 包 prjazkaban-1.0-SNAPSHOT.jar
5)新建 testJava.flow,内容如下
nodes:
- name: test_java
type: javaprocess
config:
Xms: 96M
Xmx: 200M
java.class: com.soft863.AzTest
6) 将 Jar 包、flow 文件和project 文件打包成 javatest.zip
7) 创建项目=》上传 javatest.zip =》执行作业=》观察结果
四、定时执行案例
需求:JobA 每间隔 1 分钟执行一次; 具体步骤:
Azkaban 可以定时执行工作流。
在执行工作流时候,选择左下角 Schedule
右上角注意时区是上海,然后在左面填写具体执行事件,填写的方法和 crontab 配置定时任务规则一致。如下1分钟执行一次
删除定时调度
点击 remove Schedule 即可删除当前任务的调度规则