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
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    dotnet core 获取 MacAddress 地址方法
    dotnet core 获取 MacAddress 地址方法
    dotnet core 发布只带必要的依赖文件
    dotnet core 发布只带必要的依赖文件
    Developing Universal Windows Apps 开发UWA应用 问答
    Developing Universal Windows Apps 开发UWA应用 问答
    cmd 如何跨驱动器移动文件夹
    cmd 如何跨驱动器移动文件夹
    C++ 驱动开发 error LNK2019
    C++ 驱动开发 error LNK2019
  • 原文地址:https://www.cnblogs.com/binbingg/p/14922761.html
Copyright © 2011-2022 走看看