精华内容
下载资源
问答
  • azkaban任务调度
    2019-12-02 21:06:45

    任务调度系统。

    azkaban是任务调度系统,可以调度、启动、监视各类数据运算任务,(spark任务,hive任务,MR任务,等其他一切可以由脚本执行的任务)。

    准备好运算任务所需要的资源(jar包,shell文件),然后编写job配置文件,最后把所有的打成zip压缩包,上传到azkaban的控制台,并配置调度任务。

    azkaban遇到任务失败的策略?

    finish current running、cancel all、finish all possible

    • 只运行完正在运行的job,并不会启动新的job
    • 立刻杀掉所有正在运行的任务,并立刻失败整个flow;
    • 保持那些依赖的job依旧是OK的job继续运行,直到遇到因job失败而运行不下去的那个job

    ubantu

    如果默认是图形界面时:
        Root模式下:vi /etc/default/grub
    
        非Root模式下:sudo vi /etc/default/grub
    
        可以看到这里default=”quiet splash”,就是图像界面方式启动ubuntu
    
    
    
    注释掉这行,使用”text”这行,如果没有这行则添加一行,具体快捷键操作请参考文章下方,保存并退出(按Esc+:wq!+回车)
    
    
    Root模式下:update-grub
           非Root模式下:sudo update-grub
    
    
    
    Root模式下:reboot
          非Root模式下:sudo reboot
    
          重启后就进入到了命令行方式启动ubuntu
    
    
    
     
    
    反之从命令行方式转换到图形界面方式,步骤一致,将text注释掉,启用default=”quiet splash”行。
    
    ## 微服务设计原则
    
    架构稳定
    
    高内聚 实现一组功能;
    
    松耦合 
    
    开闭原则; 一个更改影响一个服务;
    
    核心类、通用类、支持类
    
    身份验证微服务 修改找回;
    
    机构、外部机构
    角色、用户、外部角色
    
    ## 泳道图
    泳道图也叫作跨职能流程图;主要的作用是明确流程
    
    分为三个未付组织机构维度、阶段维度和流程维度。
    
    
    ## 为什么需要工作流调度系统
    
    1. 一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等
    2. 各任务单元之间存在时间先后及前后依赖关系
    3. 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
    4. 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
    	1. 	通过Hadoop先将原始数据同步到**HDFS**上;
    	2. 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张**Hive**表中;
    	3. 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
    	4. 将明细数据进行复杂的统计分析,得到结果报表信息;
    	5. 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
    
    ## 1.2 工作流调度实现方式
    
    简单的任务调度:直接使用linux的crontab来定义;
    
    复杂的任务调度:开发调度平台
    
    或使用现成的**开源调度系统**,比如ooize、azkaban等
    
    前一个工作单元的结果作为后一个工作单元的输入;
    
    
    
    
    
    ## solo server mode(单机模式)
    
    该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。
    
    
    
    ## cluster server mode(集群模式)
    
    该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。
    
    
    SLA:Service-Level Agreement的缩写,意思是服务等级协议。是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语。
    
    ```powershell
    获取任务信息; 代码;
    
    执行工作流
    
    存储工作流运行日志;
    
    如果一个工作流在不沟通的执行器上运行,他将从DB中获取状态;
    
    服务等级协议。
    
    
    分布式模式:集群内应当安装三个exec-server和一个web-server,相关组件分配如下:
    
    bigdata243      azkaban-exec
    
    bigdata244      azkaban-exec
    
    bigdata245      azkaban-web-server azkaban-exec-server mysql
    
    
    bin 启动脚本存放目录
    
    
    更多相关内容
  • 本文来自于csdn,本文主要介绍学习...那么就随着笔者一同来学习Azkaban的基础搭建场景和基本使用吧.Azkaban官网:官方文档地址:为什么需要任务调度?一个完整的数据分析系统(业务系统)通常都是由大量任务单元组成:-she
  • Azkaban任务调度

    千次阅读 2020-01-05 20:46:23
    Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个...

    概述

    Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系,这个依赖关系必须是无环的,否则会被视为无效的工作流。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。zkaban的设计首先考虑了可用性。它已经在LinkedIn上运行了几年,并驱动了许多Hadoop和数据仓库流程。

    知名度比较高的应该是Apache Oozie,但是其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发。另外一个应用也比较广泛的调度系统是Airflow,但是其开发语言是Python。

    选择Azkaban的理由:

    • 提供功能清晰,简单易用的Web UI界面
    • 提供job配置文件快速建立任务和任务之间的依赖关系
    • 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
    • 基于Java开发,代码结构清晰,易于二次开发

    适用场景

    实际项目中经常有这些场景:每天有一个大任务,这个大任务可以分成A,B,C,D四个小任务,A,B任务之间没有依赖关系,C任务依赖A,B任务的结果,D任务依赖C任务的结果。一般的做法是,开两个终端同时执行A,B,两个都执行完了再执行C,最后再执行D。这样的话,整个的执行过程都需要人工参加,并且得盯着各任务的进度。但是我们的很多任务都是在深更半夜执行的,通过写脚本设置crontab执行。其实,整个过程类似于一个有向无环图(DAG)。每个子任务相当于大任务中的一个流,任务的起点可以从没有度的节点开始执行,任何没有通路的节点之间可以同时执行,比如上述的A,B。总结起来的话,我们需要的就是一个工作流的调度器,而Azkaban就是能解决上述问题的一个调度器。

    架构

    Azkaban在LinkedIn上实施,以解决Hadoop作业依赖问题。我们有工作需要按顺序运行,从ETL工作到数据分析产品。最初是单一服务器解决方案,随着多年来Hadoop用户数量的增加,Azkaban 已经发展成为一个更强大的解决方案。Azkaban总共有三个角色:关系型数据库(MySQL)、AzkabanWebServer、AzkabanExecutorServer。Azkaban使用MySQL存储服务状态,AzkabanWebServer和AzkabanExecutorServer都需要访问MySQL的DB数据库
    在这里插入图片描述
    AzkabanWebServer是所有Azkaban的主要管理器。它处理项目管理,身份验证,调度程序和执行监视。它还用作Web用户界面。 使用Azkaban很容易。 Azkaban使用* .job键值属性文件来定义工作流程中的各个任务,并使用_dependencies_属性来定义作业的依赖关系链。这些作业文件和相关的代码可以存档为* .zip,并通过Azkaban UI或curl通过Web服务器上传。

    以前的Azkaban版本(version 3.0之前)在单个服务器中同时具有AzkabanWebServer和AzkabanExecutorServer功能。此后,执行程序已被分离到单独的服务器中。拆分这些服务的原因有很多:方便的扩展Executor的数量,并在失败的情况下可以恢复。分离以后在对Azkaban升级的时候对用户的使用影响很小。

    AzkabanWebServer如何使用DB?

    • Project Management - The projects, the permissions on the projects as well as the uploaded files.
    • Executing Flow State - Keep track of executing flows and which Executor is running them.
    • Previous Flow/Jobs - Search through previous executions of jobs and flows as well as access their log files.
    • Scheduler - Keeps the state of the scheduled jobs.
    • SLA - Keeps all the sla rules

    AzkabanExecutorServer如何使用DB?

    • Acess the project - Retrieves project files from the db.
    • Executing Flows/Jobs - Retrieves and updates data for flows and that are executing
    • Logs - Stores the output logs for jobs and flows into the db.
    • Interflow dependency - If a flow is running on a different executor, it will take state from the DB.

    编译

    [root@CentOS ~]# yum install git
    [root@CentOS ~]# git clone https://github.com/azkaban/azkaban.git
    [root@CentOS ~]# cd azkaban/
    [root@CentOS azkaban]# ./gradlew build installDist
    ...漫长的等待...
    Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
    Parallel execution with configuration on demand is an incubating feature.
    
    > Task :azkaban-web-server:npm_install 
    added 39 packages in 0.901s
    
    > Task :azkaban-web-server:jsTest 
    
    
      addClass
        ✓ should add class into element
        ✓ should not add a class which already exists in element
    
      CronTransformation
        ✓ should transfer correctly
    
      ValidateQuartzStr
        ✓ validate Quartz String corretly
    
      momentJSTest
        ✓ momentJSTest
        ✓ momentTimezoneTest
    
    
      6 passing (11ms)
    
    
    
    BUILD SUCCESSFUL in 9s
    114 actionable tasks: 8 executed, 106 up-to-date
    

    ##安装

    在version 3.0中我们提供了三种模式:独立的"solo-server"模式、较重的"two server"模式以及"multiple-executor"模式。其中solo server mode 使用的内嵌的H2 DB,所有的web server和executor server运行在一个相同的进程中,该种模式适合测试或者任务调度规模比较小;two server mode用于生产环境,后台的DB数据库使用MySQL,其中Webserver和executorserver应该被部署在不同的主机上;multiple executor mode 也通常用于生产环境,后台的DB数据库使用MySQL,其中Webserver和executorservers应该被部署在不同的主机上;

    solo server mode

    1、编译好在azkaban的安装目录下会有相应的安装包azkaban-solo-server-*.tar.gz,将该安装解压到/usr目录下

    [root@CentOS azkaban]# tree azkaban-solo-server/build/distributions
    azkaban-solo-server/build/distributions
    ├── azkaban-solo-server-3.81.0-1-g304593d.tar.gz
    └── azkaban-solo-server-3.81.0-1-g304593d.zip
    [root@CentOS azkaban]# tar -zxf azkaban-solo-server/build/distributions/azkaban-solo-server-3.81.0-1-g304593d.tar.gz -C /usr/
    [root@CentOS azkaban]# cd /usr/
    [root@CentOS usr]# mv azkaban-solo-server-3.81.0-1-g304593d azkaban-solo-server
    
    [root@CentOS azkaban-solo-server]# ls -l
    总用量 24
    drwxr-xr-x. 3 root root 4096 12月 17 16:11 bin        #启动脚本
    drwxr-xr-x. 2 root root 4096 12月 17 16:11 conf       #配置目录
    drwxr-xr-x. 2 root root 4096 12月 17 16:11 lib        #运行所需依赖jar
    drwxr-xr-x. 3 root root 4096 12月 17 16:11 plugins    #插件安装目录
    drwxr-xr-x. 2 root root 4096 12月 17 16:11 sql        #sql脚本
    drwxr-xr-x. 6 root root 4096 12月 17 16:11 web        #web服务相关
    [root@CentOS azkaban-solo-server]# tree conf/
    conf/
    ├── azkaban.properties
    ├── azkaban-users.xml
    └── global.properties
    
    0 directories, 3 files
    [root@CentOS azkaban-solo-server]# tree plugins/
    plugins/
    └── jobtypes
        └── commonprivate.properties
    
    1 directory, 1 file
    
    

    2、修改azkaban.properties配置文件

    default.timezone.id=Asia/Shanghai #修改时区
    azkaban.webserver.url=http://CentOS:8081 #配置azkabanweb服务器地址
    # email 相关配置
    mail.sender=1152926811@qq.com
    mail.host=smtp.qq.com
    mail.user=1152926811@qq.com
    mail.password=nvwoyoudipkjgdee
    # 任务调度成功&失败的发送邮箱
    job.failure.email=1152926811@qq.com
    job.success.email=1152926811@qq.com
    

    3、修改commonprivate.properties配置文件

    memCheck.enabled=false
    

    4、运行Solo Server服务器,访问CentOS:8081

    [root@CentOS azkaban-solo-server]# ./bin/start-solo.sh #关闭
    [root@CentOS azkaban-solo-server]# jps
    5638 AzkabanSingleServer
    5679 Jps
    

    在这里插入图片描述
    5、填写用户名azkaban密码azkaban

    在这里插入图片描述

    登录的账户信息存储在azkaban-users.xml配置文件中

    6、关闭Azkaban服务

    [root@CentOS azkaban-solo-server]# ./bin/shutdown-solo.sh 
    Killing solo-server. [pid: 5638], attempt: 1
    shutdown succeeded
    

    two server mode

    • 安装MySQL,开启MySQL远程访问权限
    [root@CentOS azkaban]# tree azkaban-db/build/sql/create-all-sql-3.81.0-1-g304593d.sql 
    azkaban-db/build/sql/create-all-sql-3.81.0-1-g304593d.sql [error opening dir]
    
    0 directories, 0 files
    [root@CentOS azkaban]# mysql -uroot -proot
    mysql> source /root/azkaban/azkaban-db/build/sql/create-all-sql-3.81.0-1-g304593d.sql
    mysql> show tables;
    +-----------------------------+
    | Tables_in_azkaban           |
    +-----------------------------+
    | QRTZ_BLOB_TRIGGERS          |
    | QRTZ_CALENDARS              |
    | QRTZ_CRON_TRIGGERS          |
    | QRTZ_FIRED_TRIGGERS         |
    | QRTZ_JOB_DETAILS            |
    | QRTZ_LOCKS                  |
    | QRTZ_PAUSED_TRIGGER_GRPS    |
    | QRTZ_SCHEDULER_STATE        |
    | QRTZ_SIMPLE_TRIGGERS        |
    | QRTZ_SIMPROP_TRIGGERS       |
    | QRTZ_TRIGGERS               |
    | active_executing_flows      |
    | active_sla                  |
    | execution_dependencies      |
    | execution_flows             |
    | execution_jobs              |
    | execution_logs              |
    | executor_events             |
    | executors                   |
    | project_events              |
    | project_files               |
    | project_flow_files          |
    | project_flows               |
    | project_permissions         |
    | project_properties          |
    | project_versions            |
    | projects                    |
    | properties                  |
    | ramp                        |
    | ramp_dependency             |
    | ramp_exceptional_flow_items |
    | ramp_exceptional_job_items  |
    | ramp_items                  |
    | triggers                    |
    +-----------------------------+
    34 rows in set (0.00 sec)
    [root@CentOS azkaban-web-server]# cat /etc/my.cnf 
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    max_allowed_packet=1024M
    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    [root@CentOS azkaban-web-server]# service mysqld restart
    Stopping mysqld:                                           [  OK  ]
    Starting mysqld:                                           [  OK  ]
    
    • 安装azkaban-web-server

    1、解压azkaban-exec-server-*.tar.gz到,将该安装解压到/usr目录下

    [root@CentOS azkaban]# tree azkaban-exec-server/build/distributions/
    azkaban-exec-server/build/distributions/
    ├── azkaban-exec-server-3.81.0-1-g304593d.tar.gz
    └── azkaban-exec-server-3.81.0-1-g304593d.zip
    [root@CentOS azkaban]# tar -zxf azkaban-exec-server/build/distributions/azkaban-exec-server-3.81.0-1-g304593d.tar.gz -C /usr/
    [root@CentOS azkaban]# cd /usr/
    [root@CentOS usr]# mv azkaban-exec-server-3.81.0-1-g304593d azkaban-exec-server
    [root@CentOS azkaban-exec-server]# tree conf/ bin/ plugins/
    conf/
    ├── azkaban.properties
    ├── global.properties
    └── log4j.properties
    bin/
    ├── internal
    │   ├── internal-start-executor.sh
    │   └── util.sh
    ├── shutdown-exec.sh
    └── start-exec.sh
    plugins/
    └── jobtypes
        └── commonprivate.properties
    
    2 directories, 8 files
    

    2、修改azkaban.properties配置文件

    default.timezone.id=Asia/Shanghai
    azkaban.webserver.url=http://CentOS:8081
    # email 相关配置
    mail.sender=1152926811@qq.com
    mail.host=smtp.qq.com
    mail.user=1152926811@qq.com
    mail.password=nvwoyoudipkjgdee
    
    job.failure.email=1152926811@qq.com
    job.success.email=1152926811@qq.com
    
    database.type=mysql
    mysql.port=3306
    mysql.host=CentOS
    mysql.database=azkaban
    mysql.user=root
    mysql.password=root
    mysql.numconnections=100
    

    3、修改commonprivate.properties配置文件

    memCheck.enabled=false
    

    4、启动azkaban-exec-server服务器

    [root@CentOS azkaban-exec-server]# ./bin/start-exec.sh 
    [root@CentOS azkaban-exec-server]# jps
    6545 Jps
    6511 AzkabanExecutorServer
    

    5、激活当前azkaban-exec-server

    [root@CentOS azkaban-exec-server]# curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
    {"status":"success"}
    
    • 安装azkaban-web-server

    1、编译好在azkaban的安装目录下会有相应的安装包azkaban-web-server-*.tar.gz,将该安装解压到/usr目录下

    [root@CentOS azkaban]# tree azkaban-web-server/build/distributions/
    azkaban-web-server/build/distributions/
    ├── azkaban-web-server-3.81.0-1-g304593d.tar.gz
    └── azkaban-web-server-3.81.0-1-g304593d.zip
    [root@CentOS azkaban]# tar -zxf azkaban-web-server/build/distributions/azkaban-web-server-3.81.0-1-g304593d.tar.gz -C /usr/
    [root@CentOS usr]# mv azkaban-web-server-3.81.0-1-g304593d/ azkaban-web-server
    [root@CentOS usr]# cd azkaban-web-server/
    [root@CentOS azkaban-web-server]# tree  bin conf
    bin
    ├── internal
    │   ├── internal-start-web.sh
    │   └── util.sh
    ├── shutdown-web.sh
    └── start-web.sh
    conf
    ├── azkaban.properties
    ├── azkaban-users.xml
    ├── global.properties
    └── log4j.properties
    

    2、修改azkaban.properties配置文件

    default.timezone.id=Asia/Shanghai #修改时区
    azkaban.webserver.url=http://CentOS:8081 #配置azkabanweb服务器地址
    # email 相关配置
    mail.sender=1152926811@qq.com
    mail.host=smtp.qq.com
    mail.user=1152926811@qq.com
    mail.password=nvwoyoudipkjgdee
    # 任务调度成功&失败的发送邮箱
    job.failure.email=1152926811@qq.com
    job.success.email=1152926811@qq.com
    #配置MysQL
    database.type=mysql
    mysql.port=3306
    mysql.host=CentOS
    mysql.database=azkaban
    mysql.user=root
    mysql.password=root
    mysql.numconnections=100
    
    azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
    

    3、启动azkaban-web-server

    [root@CentOS azkaban-web-server]# ./bin/start-web.sh 
    [root@CentOS azkaban-web-server]#  ./bin/start-web.sh 
    [root@CentOS azkaban-web-server]# jps
    6598 Jps
    6570 AzkabanWebServer
    6511 AzkabanExecutorServer
    

    在这里插入图片描述
    5、填写用户名azkaban密码azkaban
    在这里插入图片描述

    登录的账户信息存储在azkaban-users.xml配置文件中

    multiple executor mode

    搭建环境了和two server mode类似,只需要将azkaban-exec-server部署多分即可,因此搭建步骤略。

    Flow 2.0 Basics

    basic Flow

    • flow20.project
    azkaban-flow-version: 2.0
    
    • basic.flow
    nodes:
      - name: basic
        type: command
        config:
          command: echo "This is an echoed text."
    

    将一以上文件打包

    Job Dependencies

    • flow20.project
    azkaban-flow-version: 2.0
    
    • basic.flow
    nodes:
      - name: logic_job
        type: noop
        # jobC depends on jobA and jobB
        dependsOn:
          - jobA
          - jobB
    
      - name: jobA
        type: command
        config:
          command: echo "This is an echoed text."
    
      - name: jobB
        type: command
        config:
          command: pwd
    

    将一以上文件打包

    Flow Config

    ---
    config:
      user.to.proxy: root
      failure.emails: 1152926811@qq.com
      success.emails: 1152926811@qq.com
      notify.emails: 1152926811@qq.com
    nodes:
      - name: jobC
        type: noop
        # jobC depends on jobA and jobB
        dependsOn:
          - jobA
          - jobB
    
      - name: jobA
        type: command
        config:
          command: echo "This is an echoed text."
    
      - name: jobB
        type: command
        config:
          command: pwd
    

    Embedded Flows

    ---
    config:
      user.to.proxy: root
      notify.emails: 1152926811@qq.com
    nodes:
      - name: logic_job
        type: noop
        dependsOn:
          - embedded_flow
          - jobD
    
    
      - name: embedded_flow
        type: flow
        config:
          name: jiangzz
        nodes:
          - name: jobA
            type: noop
            dependsOn:
              - jobB
              - jobC
    
          - name: jobB
            type: command
            config:
              command: pwd
    
          - name: jobC
            type: command
            config:
              command: echo ${name}
    
      - name: jobD
        type: command
        config:
          command: echo "this is jobD"
    

    将一以上文件打包

    Java 代码

    azkaban-flow-version: 2.0
    
    • basic.flow
    ---
    config:
      user.to.proxy: root
      failure.emails: 1152926811@qq.com
      success.emails: 1152926811@qq.com
    nodes:
      - name: javaJob
        type: javaprocess
        config:
          classpath: ./flow2.0/libs/*
          java.class: com.baizhi.MyJavaJob
    
    package com.baizhi;
    
    public class MyJavaJob {
        public static void main(String[] args) {
            System.out.println("#################################");
            System.out.println("####  MyJavaJob class exec... ###");
            System.out.println("#################################");
        }
    }
    

    参数传递

    ---
    config:
      user.to.proxy: root
      failure.emails: 1152926811@qq.com
      success.emails: 1152926811@qq.com
      notify.emails: 1152926811@qq.com
    nodes:
    
      - name: calculate_time
        type: command
        config:
          name: wangwu
          command: echo "==========start=========="
          command.1: sh ./flow2.0/bin/generatetime.sh 
          command.2: echo "==========end=========="
    
    
      - name: execut_job
        type: command
        dependsOn:
          - calculate_time
        config:
          command.1: ls -l 
          command.2: echo ${start}' ~ '${end}' path:'${path}
    
    #!/usr/bin/env bash 
    start=$(date '+%Y-%m-%d %H:%M:%S')
    end=$(date -d +7day '+%Y-%m-%d %H:%M:%S')
    path=$(pwd)/flow2.0/libs
    echo '{"start":"'$start'","end":"'$end'","path":"'$path'"}' > $JOB_OUTPUT_PROP_FILE
    

    ConditionalWorkflow

    ---
    config:
      user.to.proxy: root
      notify.emails: 1152926811@qq.com
    nodes:
     - name: JobA
       type: command
       config:
         command: sh ./flow2.0/bin/exec.sh
    
     - name: JobB
       type: command
       dependsOn:
         - JobA
       config:
         command: echo “This is JobB.”
       condition: ${JobA:param1} == 1
    
     - name: JobC
       type: command
       dependsOn:
         - JobA
       config:
         command: echo “This is JobC.”
       condition: ${JobA:param1} == 2
    
     - name: JobD
       type: command
       dependsOn:
         - JobB
         - JobC
       config:
         command: pwd
       condition: one_success
    

    bin/exec.sh

    #!/usr/bin/env bash 
    
    echo '{"param1": "1"}' > $JOB_OUTPUT_PROP_FILE
    

    参考https://azkaban.readthedocs.io/en/latest/conditionalFlow.html

    Kafka Event Trigger Plugin

    当前,Azkaban支持通过调度它或Ajax API来启动流。但是,它们受到限制,因为有时需要按需自动执行作业。事件触发是Azkaban引入的一项新功能。它定义了触发流程的新范例-在Kafka事件到达时触发流程。该概念使用户可以定义流所依赖的事件。一旦所有事件准备就绪,将触发工作流程。

    1、修改azkaban-web-server/conf/azkaban.properties,添加一下属性

    azkaban.dependency.plugin.dir=plugins/dependency
    azkaban.server.schedule.enable_quartz=true
    

    2、创建azkaban.private.propertiesplugins

    [root@CentOS azkaban-web-server]# mkdir plugins/
    [root@CentOS azkaban-web-server]# tree plugins/
    plugins/
    └── dependency
        └── kafka
            └──  dependency.properties
            
    2 directories, 1 files  
    
    [root@CentOS azkaban-web-server]# tree conf/
    conf/
    ├── azkaban.private.properties
    ├── azkaban.properties
    ├── azkaban-users.xml
    ├── global.properties
    └── log4j.properties
    
    0 directories, 5 files
    
    [root@CentOS ~]# cd azkaban
    [root@CentOS azkaban]# cp az-flow-trigger-dependency-type/kafka-event-trigger/build/libs/kafka-event-trigger-3.81.0-1-g304593d-fat.jar /usr/azkaban-web-server/plugins/dependency/kafka/
    [root@CentOS azkaban]# cd /usr/azkaban-web-server/
    [root@CentOS azkaban-web-server]# tree plugins/ #该目录是创建的
    plugins/
    └── dependency
        └── kafka
            ├── dependency.properties
            └── kafka-event-trigger-3.81.0-1-g304593d-fat.jar
    
    2 directories, 2 files
    
    

    3、修改dependency.properties

    dependency.classpath=/usr/azkaban-web-server/plugins/dependency/kafka/kafka-event-trigger-3.81.0-1-g304593d-fat.jar
    dependency.class=trigger.kafka.KafkaDependencyCheck
    kafka.broker.url=CentOS:9092
    

    4、修该azkaban.private.properties

    org.quartz.dataSource.quartzDS.user=root
    org.quartz.dataSource.quartzDS.password=root
    org.quartz.dataSource.quartzDS.driver = com.mysql.jdbc.Driver
    org.quartz.dataSource.quartzDS.URL = jdbc:mysql://CentOS:3306/azkaban
    org.quartz.threadPool.threadCount = 3
    org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.tablePrefix=QRTZ_
    org.quartz.jobStore.dataSource=quartzDS
    
    展开全文
  • Azkaban任务调度工具简述

    千次阅读 2021-09-02 21:40:16
    小菜鸟的个人博客已经正式上线且...Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web .

    小菜鸟的个人博客已经正式上线且对外开放啦…

    博客访问地址小菜鸟的大梦想

    欢迎各位同学扫码关注本人公众号 ↓↓↓ 更多优质内容将 首发 公众号
    在这里插入图片描述


    Azkaban简述

    image.png

    Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows.

    Azkaban 是在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决订单,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。

    特征:

    • 兼容任何版本的Hadoop
    • 易于使用的Web UI
    • 简单的Web和http工作流上传
    • 项目工作区
    • 调度工作流程
    • 模块化和可插入
    • 身份验证和授权
    • 跟踪用户操作
    • 有关失败和成功的电子邮件提醒
    • SLA警报和自动查杀
    • 重试失败的工作

    以上来自官方介绍,详情见 官网

    为什么需要工作流调度系统

    1、一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等
    2.、各任务单元之间存在时间先后及前后依赖关系
    3、为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

    例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下:
    1、通过Hadoop先将原始数据同步到HDFS上;
    2、借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
    3、需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
    4、将明细数据进行各种统计分析,得到结果报表信息;

    需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

    工作流调度的实现方式

    • 简单的任务调度:直接使用linux的crontab来定义;
    • 复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如ooize、azkaban、airflow等

    在hadoop领域,常见的工作流调度器有Oozie,Azkaban,Cascading,Hamake等

    各种调度工具特性对比

    下面的表格对上述四种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在显著的区别,在做技术选型的时候,可以提供参考:

    特性HamakeOozieAzkabanCascading
    工作流描述语言XMLXML (xPDL based)text file with key/value pairsJava API
    依赖机制data-drivenexplicitexplicitexplicit
    是否要web容器NoYesYesNo
    进度跟踪console/log messagesweb pageweb pageJava API
    Hadoop job调度支持noyesyesyes
    运行模式command line utilitydaemondaemonAPI
    Pig支持yesyesyesyes
    事件通知nononoyes
    需要安装noyesyesno
    支持的hadoop版本0.18+0.20+currently unknown0.18+
    重试支持noworkflownode evelyesyes
    运行任意命令yesyesyesyes
    Amazon EMR支持yesnocurrently unknownyes

    Azkaban与Oozie对比

    对市面上较流行的两种调度器。总体来说,ooize相比azkaban是一个重量级的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器azkaban是很不错的候选对象。

    • 功能
      两者均可以调度mapreduce、pig、java、shell脚本工作流任务
      两者均可以定时执行工作流任务

    • 工作流定义
      Azkaban使用Properties文件定义工作流
      Oozie使用XML文件定义工作流

    • 工作流传参
      Azkaban支持直接传参,例如:${input}
      Oozie支持参数和EL表达式,例如:${fs:dirSize(myInputDir)}

    • 定时执行
      Azkaban的定时执行任务是基于时间的
      Oozie的定时执行任务基于时间和输入数据

    • 资源管理
      Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
      Oozie暂无严格的权限控制

    • 工作流执行
      Azkaban有两种运行模式,分别是soloserver mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
      Oozie作为工作流服务器运行,支持多用户和多工作流

    • 工作流管理
      Azkaban支持浏览器以及ajax方式操作工作流
      Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流

    Azkaban安装部署

    编译

    使用版本:azkaban3.47.0

    tar -zxvf azkaban3.47.0.tar.gz -C ../servers/
    cd /export/servers/azkaban-3.47.0/
    yum -y install git
    yum -y install gcc-c++
    ./gradlew build installDist -x test
    

    编译成功如下图:
    azkaban_compile.png

    编译之后的文件

    • azkaban-exec-server
      /export/servers/azkaban-3.47.0/azkaban-exec-server/build/distributions

    • azkaban-web-server
      /export/servers/azkaban-3.47.0/azkaban-web-server/build/distributions

    • azkaban-solo-server
      /export/servers/azkaban-3.47.0/azkaban-solo-server/build/distributions

    • execute-as-user.c
      /export/servers/azkaban-3.47.0/az-exec-util/src/main/c

    • 数据库脚本文件
      /export/servers/azkaban-3.47.0/azkaban-db/build/install/azkaban-db

    azkaban单服务模式

    azkaban的solo server使用的是一个单节点的模式来进行启动服务的,只需要一个azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz的安装包即可启动,所有的数据信息都是保存在H2这个azkaban默认的数据当中。

    cd /export/softwares
    tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf
    vim azkaban.properties
    
    # 更改时区
    default.timezone.id=Asia/Shanghai
    
    # 启动:
    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT
    bin/start-solo.sh(一定要采用这种方式启动)
    

    访问:https://ip:port/

    解决job任务一直处于running的状态

    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/ jobtypes/
    vim  commonprivate.properties
    

    重启azkaban

    azkaban两个服务模式

    • Azkaban Web服务安装包
      azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

    • Azkaban执行服务安装包
      azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz

    • 编译之后的sql脚本
      create-all-sql-0.1.0-SNAPSHOT.sql

    • C程序文件脚本
      execute-as-user.c程序

    • 安装Mysql数据库
      省略…

    安装完之后需执行

    mysql -uroot -p
    
    # 执行
    CREATE DATABASE azkaban;
    CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';    
    GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION; 
      
    source /export/softwares/create-all-sql-0.1.0-SNAPSHOT.sql;
    
    • 解压azkaban安装包
    tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
    tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
    
    • 安装SSL安全认证
    cd /export/servers/azkaban-web-server-3.47.0
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    

    web server安装

    cp -r /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf/ /export/servers/azkaban-web-server-3.47.0/
    
    • 修改azkaban-web-server的配置文件
    cd /export/servers/azkaban-web-server-3.47.0/conf
    vim azkaban.properties
    #### 配置以下内容
    
    # Azkaban Personalization Settings
    azkaban.name=MyAzkaban
    azkaban.label=My Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=web/
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=conf/azkaban-users.xml
    # Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    #database.type=h2
    #h2.path=./h2
    #h2.create.tables=true 
    
    database.type=mysql
    mysql.port=3306
    mysql.host=localhost
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100 
    
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=true 
    jetty.maxThreads=25
    jetty.port=8081
    
    jetty.keystore=/export/servers/azkaban-web-server-3.47.0/keystore
    jetty.password=azkaban
    jetty.keypassword=azkaban
    jetty.truststore=/export/servers/azkaban-web-server-3.47.0/keystore
    jetty.trustpassword=azkaban 
    
    # Azkaban Executor settings
    executor.port=12321
    # mail settings
    mail.sender=
    mail.host=
    # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    # when this parameters set then these parameters are used to generate email links. 
    # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    # azkaban.webserver.external_hostname=myazkabanhost.com
    # azkaban.webserver.external_ssl_port=443
    # azkaban.webserver.external_port=8081
    job.failure.email=
    job.success.email=
    
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban plugin settings
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    
    • 添加log4j.properties的配置文件
    cd /export/servers/azkaban-web-server-3.47.0/conf
    vim log4j.properties
    
    #### 配置以下内容
    log4j.rootLogger=INFO, Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] %m%n
    log4j.category.velocity=INFO
    

    executor server安装

    cp -r /export/servers/azkaban-web-server-3.47.0/conf/ /export/servers/azkaban-exec-server-3.47.0/
    
    • 添加插件
    mkdir -p /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
    cp /export/softwares/execute-as-user.c /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes/
    
    yum -y install gcc-c++
    cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
    gcc execute-as-user.c -o execute-as-user 
    chown root execute-as-user
    chmod 6050 execute-as-user
    
    • 添加配置文件
    cd /export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
    vim commonprivate.properties
    
    #### 配置以下内容
    execute.as.user=false
    memCheck.enabled=false
    azkaban.native.lib=/export/servers/azkaban-exec-server-3.47.0/plugins/jobtypes
    

    启动web-server

    bin/start-web.sh

    启动exec server

    bin/start-exec.sh

    访问

    https://ip:port/

    展开全文
  • azkaban是一个工作流调度器。 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序、hive脚本等,为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行...

    一、azkaban介绍

    一个完整的数据分析系统通常都是由大量任务单元组成:

    shell脚本程序、java程序、mapreduce程序、hive脚本等

    为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。

    二、安装azkaban

    1、上传安装包(3个),并解压

    2、导入脚本

    mysql> create database azkaban;
    mysql> use azkaban;
    Database changed
    mysql> source /home/hadoop/azkaban-2.5.0/create-all-sql-2.5.0.sql;
    

    3、生成证书文件

     keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    

    将生成 keystore 证书文件拷贝到 azkaban web服务

    cp keystore azkaban/server
    

    4、修改配置文件

    同步时间

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  
    

    进入azkaban web服务器安装目录 conf下,修改azkaban.properties

    #Azkaban Personalization Settings
    azkaban.name=Test                          #服务器UI名称,用于服务器上方显示的名字
    azkaban.label=My Local Azkaban             #描述
    azkaban.color=#FF3601                      #UI颜色
    azkaban.default.servlet.path=/index        
    web.resource.dir=web/                      #默认根web目录
    default.timezone.id=Asia/Shanghai          #默认时区,已改为亚洲/上海 默认为美国
     
    #Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager      #用户权限管理默认类
    user.manager.xml.file=conf/azkaban-users.xml        #用户配置,具体配置参加下文
     
    #Loader for projects
    executor.global.properties=conf/global.properties    # global配置文件所在位置
    azkaban.project.dir=projects                                                #
     
    database.type=mysql                #数据库类型
    mysql.port=3306                    #端口号
    mysql.host=localhost               #数据库连接IP
    mysql.database=azkaban             #数据库实例名
    mysql.user=root                    #数据库用户名
    mysql.password=root                #数据库密码
    mysql.numconnections=100           #最大连接数
     
    # Velocity dev mode
    velocity.dev.mode=false
    # Jetty服务器属性.
    jetty.maxThreads=25                #最大线程数
    jetty.ssl.port=8443                #Jetty SSL端口
    jetty.port=8081                    #Jetty端口
    jetty.keystore=keystore            #SSL文件名
    jetty.password=123456              #SSL文件密码
    jetty.keypassword=123456           #Jetty主密码 与 keystore文件相同
    jetty.truststore=keystore          #SSL文件名
    jetty.trustpassword=123456         # SSL文件密码
     
    # 执行服务器属性
    executor.port=12321               #执行服务器端口
     
    # 邮件设置
    mail.sender=xxxxxxxx@163.com         #发送邮箱
    mail.host=smtp.163.com               #发送邮箱smtp地址
    mail.user=xxxxxxxx                   #发送邮件时显示的名称
    mail.password=**********             #邮箱密码
    job.failure.email=xxxxxxxx@163.com   #任务失败时发送邮件的地址
    job.success.email=xxxxxxxx@163.com   #任务成功时发送邮件的地址
    lockdown.create.projects=false                                           #
    cache.directory=cache                                                            #缓存目录
    

    进入azkaban web服务器conf目录,修改azkaban-users.xml(用户配置)

    <azkaban-users>
            <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
            <user username="metrics" password="metrics" roles="metrics"/>
            <user username="admin" password="admin" roles="admin,metrics" />
            <role name="admin" permissions="ADMIN" />
            <role name="metrics" permissions="METRICS"/>
    </azkaban-users>
    

    进入executor安装目录conf,修改azkaban.properties

    #Azkaban
    default.timezone.id=Asia/Shanghai                   #时区
     
    # Azkaban JobTypes 插件配置
    azkaban.jobtype.plugin.dir=plugins/jobtypes         #jobtype 插件所在位置
     
    #Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
     
    #数据库设置
    database.type=mysql                                 #数据库类型(目前只持)
    mysql.port=3306                                     #数据库端口号
    mysql.host=192.168.20.200                           #数据库IP地址
    mysql.database=azkaban                              #数据库实例名
    mysql.user=root                                     #数据库用户名
    mysql.password=root                                 #数据库密码
    mysql.numconnections=100                            #最大连接数
     
    # 执行服务器配置
    executor.maxThreads=50                              #最大线程数
    executor.port=12321                                 #端口号(如修改,请与web服务中一致)
    executor.flow.threads=30                            #线程数
    

    5、启动

    启动web服务器:在azkaban web服务器目录下执行

    bin/azkaban-web-start.sh
    

    启动exexutor服务器:在执行服务器目录下执行

    bin/azkaban-executor-start.sh
    

    在谷歌浏览器中输入https://服务器IP地址:8443 ,即可访问azkaban服务了

    三、入门示例

    Azkaba内置的任务类型支持command、java

    1、创建job描述文件 vi command.job

    #command.job
    type=command                                                    
    command=echo 'hello' 
    

    2、将job资源文件打包成zip文件

    zip command.job
    

    3、通过azkaban的web管理平台创建project并上传job压缩包

    在这里插入图片描述
    在这里插入图片描述
    4、启动执行该job

    在这里插入图片描述
    四、运行shell任务

    1、编写myshell.sh

    #!/bin/bash
    for i in {1..1000}
    do
    echo $i >> /root/myscript.log
    sleep 0.1
    done
    

    2、编写job

    type=command
    command=sh myshell.sh
    

    五、多个依赖关系任务

    1、创建第一个job

    #!/bin/bash
    for i in {1..600}
    do
    echo "a ${i} " >> /root/myscripta.log
    sleep 0.1
    done
    
    type=command
    command=sh a.sh
    

    2、创建第二个job

    #!/bin/bash
    for i in {1..800}
    do
    echo "b ${i} " >> /root/myscriptb.log
    sleep 0.1
    done
    
    type=command
    command=sh b.sh
    dependencies=a
    

    六、hdfs任务

    1、编写hdfsdir.sh

    #!/bin/bash
    
    DT=`date -d'-1 day' +%Y-%m-%d`
    
    HADOOP_HOME=/opt/apps/hadoop-3.1.1/
    ${HADOOP_HOME}/bin/hdfs dfs -mkdir -p /log_bak/${DT}
    ${HADOOP_HOME}/bin/hdfs dfs -mv /log/${DT}/*.txt /log_bak/${DT}/
    

    2、编写job

    type=command
    command=sh hdfsdir.sh
    

    七、mapreduce任务

    1、编写一个mr程序,并打包

    2、wc.sh

    #!/bin/bash
    
    export HADOOP_HOME=/opt/apps/hadoop-3.1.1/
    ${HADOOP_HOME}/bin/hadoop jar azkaban_demos-1.0.jar cn.doitedu.mr.WordCount $1 $2
    

    3、编写job

    type=command
    command=sh wc.sh ${INPATH} ${OUTPATH}
    

    八、spark任务

    1、编写一个spark程序,并打包

    2、wc.sh

    #!/bin/bash
    
    #############################################
    #                                           #
    #  @author hunter@doitedu                   #
    #  @date   2020-10-10                       #
    #  @desc   id绑定评分计算任务启动脚本       #
    #                                           #
    #############################################
    
    
    export SPARK_HOME=/opt/apps/spark-2.4.4
    
    ${SPARK_HOME}/bin/spark-submit \
    --master yarn \
    --deploy-mode cluster \
    --class cn.doitedu.spark.WordCount \
    --name wordcount \
    --driver-memory 1024M \
    --executor-memory 2G \
    --queue default \
    --num-executors 1 azkaban_demos-1.0.jar $1 $2
    

    3、编写job

    type=command
    command=sh wc.sh ${INPATH} ${OUTPATH}
    

    失败策略:

    某个 job 如果失败,有如下应对策略可以选择:

    Finish Current Running:只完成当前已经在运行的job,并且不会再启动新的 job
    Cancel All :立刻杀掉所有 job,并立刻失败整个 Flow
    Finish All Possible :保持这些 job 继续运行,只要它的依赖 job 是 ok 的
    

    并行策略:

    Skip execution :后面的 execution 取消
    Run Concurrently:两个 execution 并行运行
    Pipeline:
            Level1:前 execution 中 jobA 如果还没执行完,则后 execution 会在 jobA 前阻塞;
            Level2:前 execution 中 jobA 及其所有子 job 如果还没执行完,则后 execution 会在 jobA 前阻塞
    
    展开全文
  • azkaban在执行打包好的job任务时,多个job之间存在依赖关系,如果中途有job执行失败 怎么处理?官网就是笼统的说失败了可以自己选择是否全部取消,或满足执行条件的时候 自动执行。能不能说具体一点,生产环境中这种...
  • Azkaban 任务调度工具

    2020-04-09 21:56:42
    Azkaban是由Linkedin公司推出的⼀个批量⼯作流任务调度器,主要⽤于在⼀个⼯作流内以⼀个特定的顺序运⾏⼀组⼯作和流程,它的配置是通过简单的key:value对的⽅式,通过配置中的dependencies 来设置依赖关系,这个...
  • Azkaban是LinkedIn开源的任务调度框架,类似于JavaEE中的JBPM和Activiti工作流框架。Azkaban功能和特点:1,任务的依赖处理。2,任务监控,失败告警。3,任务流的可视化。4,任务权限管理。常见的任务调度框架有...
  • Azkaban 任务调度系统(使用和小技巧)

    千次阅读 2018-07-26 14:12:17
    上节主要介绍了安装搭建和简单的运行一个job,但是真正使用到实际场景还是需要了解更多的知识,比如任务怎么互相依赖,可以选择指定的节点来执行吗等等一些相关的操作会在本节中进行介绍 附上: 喵了个咪的博客:w-blog...
  • hadoop+hive+sqoop数据迁移+azkaban任务调度
  • Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】.pdf
  • 一、任务调度概述 1. 为什么需要工作流调度系统 1)一个完整的数据分析系统通常都是由大量任务单元组成: shell 脚本程序,java 程序,mapreduce 程序、hive 脚本等。 2)各任务单元之间存在时间先后及前后依赖...
  • azkaban任务调度api

    2020-06-19 15:03:54
    因此azkaban任务不能在web Ui上指定的时间跑,需要被通知到处理完成后才开始跑 现在考虑两种方案,一是采用api,通知后开始执行 二是依然定时执行,但是第一个任务是轮训获取通知,在接收到通知前阻塞,接收到后...
  • Azkaban 任务调度 官网地址:https://azkaban.github.io/ 概述 Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:...
  • 大数据任务调度工具azkaban深入使用

    千次阅读 2022-04-08 18:15:07
    大数据任务调度工具azkaban深入使用
  • 最近在使用azkaban调度shell脚本的时候,遇到了一个错误,错误日志大概如下: ava.lang.RuntimeException: java.io.IOException: Cannot run program "/SqoopScripts/import/usermail/import_t_usermail.sh" (in ...
  • 大数据任务调度工具azkaban初步使用

    千次阅读 2022-03-16 18:40:32
    大数据任务调度工具azkaban 初步学习
  • 文章目录数据准备编写Azkaban工作流程配置文件Azkaban多Executor模式下注意事项 数据准备 1)用户行为数据准备 (1)修改/opt/module/applog下的application.properties #业务日期 mock.date=2020-06-15 注意:分发...
  • 4.人性化的定时任务执行 能够根据flow的通配符设置列出最近的10次flow执行计划   在上图中,seconds并没有与列表中10次执行计划对应上(实际上seconds的配置保存后已经写入数据库,仅仅是界面我没有...
  • 1 Azkaban任务调度管理 1.1 执行任务的脚本编写和说明 在做任务调度的过程中,要编写相应的脚本。 -rwxrwxrwx 1 root root 809 6月 12 19:52 auto-exec-1-mr.sh -rwxrwxrwx 1 root root 975 6月 12 19:53 auto-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,224
精华内容 1,689
关键字:

azkaban任务调度