zoukankan      html  css  js  c++  java
  • 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 '	';
    load data local inpath '/root/student.txt' into table student;
    insert overwrite local directory '/root/student'
    row format delimited fields terminated by '	'
    
    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

    • 查看结果

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    NET 2.0(C#)调用ffmpeg处理视频的方法(转载)
    ffmpeg编解码详细过程(转载)
    使用FFMPEG SDK解码流数据
    FFMPEG解码流程
    web worker,SSE,WebSocket,AJAX 与后端交互的方式
    jQuery基础篇
    Git的基本命令介绍
    项目配置中 提示access denied的问题 解决方案
    http网络协议 学习摘要
    OSI七层模型 学习摘要
  • 原文地址:https://www.cnblogs.com/binbingg/p/14922761.html
Copyright © 2011-2022 走看看