前言
本篇将以一个简单的案例演示通过Azkaban平台来调度执行Java程序。
一、Azkaban调度类型介绍
azkaban 可以支持非常多的任务类型,常用的任务类型有如下几种:
- Command:使用Linux shell命令行任务。
- HadoopShell:这和Command一样也是命令类型,只不过可以和Hadoop集群通信。
- Java:调度执行Java任务。
- hadoopJava:也是一种Java类型,可以和hadoop集群通信,可以通过运行hadoopJava作业来创建大多数Hadoop作业类型,例如Pig,Hive等。
- Pig:pig脚本任务。
- Hive:支持 执行hiveSQL 任务。
官网中对各个类型的详细配置说明地址:xiaoshuai.github.io/azkaban-gh-…
二、JavaProcess任务类型介绍
java和javaprocess作业类型之间的主要区别:
- javaprocess运行具有”main“方法的用户程序,java 运行 Azkaban 提供的调用用户程序“run”方法的 main 方法。
- Azkaban 可以进行设置,例如获取 Kerberos 票证或在提供的主要java类型中请求 Hadoop 令牌,而javaprocess用户负责一切。
说明:java 在之前azkaban的版本中,是azkaban内置的,在2.0版本后就不再是内置的了,而javaprocess依旧是内置的。
配置
JavaProcess类型可以运行一个自定义主类方法,type 类型为javaprocess,可用配置为:
- Xms: 最小堆
- Xmx: 最大堆
- classpath: 类路径
- java.class: 要运行的Java对象,其中必须包含Main方法
- main.args: main方法的参数
三、JavaProcess任务调度案例
Java程序
(1)创建一个Maven项目,编写Java程序
package com.lilinchao.function;
/**
* @author lilinchao
* @date 2022/4/24
**/
public class AzkabanFuncation {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
(2)将项目打成Jar包
Azkaban配置
(1)新建一个工程说明文件javaprocess.project
azkaban-flow-version: 2.0
(2)新建javaprocess.flow文件,增加如下内容
nodes:
- name: javajob
type: javaprocess
config:
java.class: com.lilinchao.function.AzkabanFuncation
- name:job名称,可以任意填;
- type:需要执行java程序,所以需要指定类型为
javaprocess; - job.class:配置
main方法的类路径;
(3)将javaprocess.project、javaprocess.flow、JavaProcess-1.0.jar三个文件一起打成一个ZIP压缩包
(4)通过Azkaban调度执行
(5)查看执行结果
四、动态传参
如果需要传递参数Azkaban也支持对任务进行动态传参:
- 点击进入javajob工程
- 点击Edit进行编辑
- 点击Add Row添加参数