Azkaban 任务调度(三)

单一 job 任务调度

  • 创建 job 描述文件
复制代码
[root@node-01 jobs]# vim first.job
#first.job
type=command
command=echo 'this is my first job'
  • 将 job 资源文件打包成 zip 文件
复制代码
# 安装 zip 命令
[root@node-01 jobs]# yum install -y zip unzip
[root@node-01 jobs]#  zip first.zip first.job
  adding: first.job (deflated 10%)
[root@node-01 jobs]# ll
总用量 8
-rw-r--r--. 1 root root  50 5月  19 22:51 first.job
-rw-r--r--. 1 root root 213 5月  19 22:53 first.zip

注意:目前,Azkaban 上传的工作流文件只支持 xxx.zip 文件。zip 应包含 xxx.job 运行作业所需的文件和任何文件(文件名后缀必须以 .job 结尾,否则无法识别)。作业名称在项目中必须是唯一的。

  • 通过 Azkaban 的 web 管理平台创建 project 并上传 job 的 zip 包

    创建工程,如下图:

image-20210519225713034

上传 zip 文件,如下图:

image-20210519225822683

执行 Job 任务,如下图:

image-20210519230006588

image-20210519230054364

点击 Continue 按钮,执行 Job,如下图:

image-20210519230114433

Job 执行成功,如下图:

image-20210519230233611

查看日志,如下图:

image-20210519230439679

多 Job 工作流调度

  • 创建有依赖关系的多个 job 描述

    第一个 job:start.job

复制代码
[root@node-01 jobs]# vim start.job
#start.job
type=command
command=touch /root/jobs/kangkang.txt

​ 第二个 job:step1.job 依赖 start.job

复制代码
[root@node-01 jobs]# vim step1.job
#step1.job
type=command
dependencies=start
command=echo "this is step1 job"

​ 第三个 job:step2.job 依赖 start.job

复制代码
[root@node-01 jobs]# vim step2.job
#step2.job
type=command
dependencies=start
command=echo "this is step2 job"

​ 第四个 job:finish.job 依赖 step1.job 和 step2.job

复制代码
[root@node-01 jobs]# vim finish.job
#finish.job
type=command
dependencies=step1,step2
command=echo "this is finish job"
  • 将所有 job 资源文件打到一个 zip 包中
复制代码
[root@node-01 jobs]# zip jobs.zip start.job step1.job step2.job finish.job
  • 在 Azkaban 的 web 管理界面创建工程并上传 zip 包

    image-20210519231703034

  • 启动工作流 Flow ,查看结果

Java 程序任务调度

  • 编写 Java 程序

    复制代码
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * @desc Azkaban Java 程序任务调度
     */
    public class AzkabanTest {
        public void run() throws IOException {
            //根据需要编写具体代码
            FileOutputStream fos = new FileOutputStream("/root/azkaban.txt");
            fos.write("this is a java program.".getBytes());
            fos.close();
        }
    
        public static void main(String[] args) throws IOException {
            AzkabanTest azkabanTest = new AzkabanTest();
            azkabanTest.run();
        }
    }
    
  • 将 Java 程序打成 Jar 包,创建 lib 目录,将 Jar 包放入 lib 内

    复制代码
    [root@node-01 ~]# mkdir lib
    [root@node-01 ~]# mv AzkabanDemo-1.0-SNAPSHOT.jar lib/
    
  • 编写 job 文件

    复制代码
    [root@node-01 ~]# cd jobs/
    #azkabanJava.job
    type=javaprocess
    java.class=AzkabanTest
    classpath=/root/lib/*
    
  • 将 job 文件打成 zip 包

    复制代码
    [root@node-01 jobs]# zip azkabanJava.zip azkabanJava.job 
    
  • 通过 Azkaban 的 web 管理平台创建 project 并上传 job 压缩包,启动执行该 job

HDFS 操作任务

  • 创建 job 描述文件
复制代码
[root@node-01 jobs]# $ vim fs.job
#hdfs job
type=command
command=/root/apps/hadoop-3.2.1/bin/hadoop fs -mkdir /azkaban
  • 将 job 资源文件打包成zip文件
复制代码
[root@node-01 jobs]# zip fs.zip fs.job 
  • 通过 Azkaban 的 web 管理平台创建 project 并上传 job 压缩包
  • 启动执行该 job
  • 查看结果

MapReduce任务

  • 创建 job 描述文件,及 mr 程序 jar 包
复制代码
[root@node-01 jobs]# vim mapreduce.job
#mapreduce job
type=command
command=/root/apps/hadoop-3.2.1/bin/hadoop jar /root/apps/hadoop-3.2.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /wordcount/input /wordcount/output
  • 将所有 job 资源文件打到一个 zip 包中
复制代码
[root@node-01 jobs]# zip mapreduce.zip mapreduce.job 
  • 在 Azkaban 的 web 管理界面创建工程并上传 zip 包

  • 启动执行该 job

  • 查看结果

Hive脚本任务

  • 创建 hive 脚本
复制代码
[root@node-01 jobs]# vim student.sql
use default;
drop table student;
create table student(id int, name string)
row format delimited fields terminated by '\t';
load data local inpath '/root/student.txt' into table student;
insert overwrite local directory '/root/student'
row format delimited fields terminated by '\t'

select * from student;
  • Job 描述文件:hive.job
复制代码
[root@node-01 jobs]# vim hive.job
#hive job
type=command
command=/root/apps/hive-3.1.2/bin/hive -f /root/apps/jobs/student.sql
  • 将所有 job 资源文件打到一个 zip 包中
复制代码
[root@node-01 jobs]# zip hive.zip hive.job 
  • 在 Azkaban 的 web 管理界面创建工程并上传 zip 包

  • 启动 job

  • 查看结果

posted @   Binge-和时间做朋友  阅读(499)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示