Azkaban之JavaProcess任务类型

504 阅读2分钟

前言

本篇将以一个简单的案例演示通过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包

06.Azkaban之JavaProcess任务类型01.jpg

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压缩包

06.Azkaban之JavaProcess任务类型02.jpg

(4)通过Azkaban调度执行

06.Azkaban之JavaProcess任务类型03.jpg

(5)查看执行结果

06.Azkaban之JavaProcess任务类型04.jpg

四、动态传参

如果需要传递参数Azkaban也支持对任务进行动态传参:

  • 点击进入javajob工程

06.Azkaban之JavaProcess任务类型05.jpg

  • 点击Edit进行编辑

06.Azkaban之JavaProcess任务类型06.jpg

  • 点击Add Row添加参数

06.Azkaban之JavaProcess任务类型07.jpg