Azkaban-工作流任务调度器-黑马

只要使用shell脚本启动的任务都可以使用Azkaban来调度

Azkaban

  • azkaban
    • 是由领英退出的一款开源免费的工作流调度器软件
    • 特点
      • 功能强大 可以调度几乎所有软件的执行(command)
      • 配置简单 job配置文件
      • 提供了web页面使用
      • java语言开发 源码清晰可见 可以进行二次开发
    • 架构
      • web服务器 :对外提供web服务 用户在页面上进行项目的相关管理
      • executor服务器:负责具体的工作流的调度提交。
      • 数据库:用于保存工作流相关信息(比如:mysql)
    • 部署模式
      • 单节点模式:web、executor在同一个进程 适用于测试体验
      • two-server:web、executor在不同的进程中 可以使用第三方数据库
      • mutil-executor-server:web、executor在不同的机器上 可以部署多个executor服务器

  • 安装部署

    • 单节点部署模式 注意时区 内存检测的关闭

    • 启动时候必须在安装包的根目录下进行启动

      bin/start-solo.sh  正确
      ./start-solo.sh  错误
      
  • azkaban开发流程

    • 编写job的配置文件 xxxxx.job

      type=command
      command=xxxx
      
    • 把所有job配置打成一个zip的压缩包

    • 登录页面node-1:8081 创建工程(默认用户名密码都是azkaban)

    • 上传zip压缩包

    • 选择调度schduler或者立即执行executor工程。

  • two server模式部署

    • 该模式的特点是web服务器和executor服务器分别位于不同的进程中
    • 使用第三方的数据库进行数据的保存 :mysql
    • 安装部署注意事项
      • 先对mysql进行初始化操作
      • 配置azkaban.properties 注意时区 mysql相关 ssl
      • 启动时候注意需要自己手动的激活executor服务器 在根目录下启动
      • 如果启动出错 通过安装包根目录下的日志进行判断
      • 访问的页面https
  • multiple-executor部署模式

    • 所谓的 multiple-executor指的是可以在多个机器上分别部署executor服务器

      相当于做了一个负载均衡

    • 特别注意:executor启动(包括重启)的时候 默认不会激活 需要自己手动激活

      对应的mysql中的表executors active :0 表示未激活 1表示激活

      可以自己手动修改数据提交激活 也可以使用官方的命令请求激活

      curl -G "node-3:$(<./executor.port)/executor?action=activate" && echo
      

  • azkaban调度总结
    • 理论上任何一款软件,只有可以通过shell command执行 都可以转化成为azkaban的调度执行
    • type=command command = sh xxx.sh

一.工作流

在这里插入图片描述

3.工作流调度工具之间对比

在这里插入图片描述

三、 Azkaban 调度器

1. Azkaban 介绍

在这里插入图片描述

2. Azkaban 原理架构

在这里插入图片描述
在这里插入图片描述

3. Azkaban 三种部署模式

在这里插入图片描述

4. Azkaban 源码编译

Azkaban3.x版本以后没有提供编译好的二进制安装包,在安装前需要自己编译成二进制包。
并且提前安装好 Maven、Ant、Node 等软件,具体请参考附件资料
4.1. 编译环境

yum install –y git
yum install –y gcc-c++

4.2. 下载源码解压

wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz
tar -zxvf 3.51.0.tar.gz 
cd ./azkaban-3.51.0/

4.3. 编译源码
./gradlew build installDist -x test
Gradle 是一个基于 Apache Ant 和 Apache Maven 的项目自动化构建工具。
-x test 跳过测试。(注意联网下载 jar 可能会失败、慢)
在这里插入图片描述
4.4.编译后安装包路径
编译成功之后就可以在指定的路径下取得对应的安装包了。
在这里插入图片描述

#solo-server模式安装包路径
azkaban-solo-server/build/distributions/
#two-server模式和multiple-executor模式web-server安装包路径
azkaban-web-server/build/distributions/
#two-server模式和multiple-executor模式exec-server安装包路径
azkaban-exec-server/build/distributions/

在这里插入图片描述

azkaban-db/build/distributions/
数据库相关安装包路径

四、Azkaban安装部署

1.solo-server模式部署

使用自带的数据库
1.1.节点规划
在这里插入图片描述
1.2. 解压配置

mkdir /export/servers/azkaban
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz –C /export/servers/azkaban/

vim conf/azkaban.properties
default.timezone.id=Asia/Shanghai #修改时区

vim  plugins/jobtypes/commonprivate.properties

添加:memCheck.enabled=false
azkaban默认需要3G的内存,剩余内存不足则会报异常

1.3.启动验证

cd azkaban-solo-server-0.1.0-SNAPSHOT/
bin/start-solo.sh  #必须bin/start-solo.sh启动,不能进入bin目录./start-solo.sh启动

注:启动/关闭必须进到azkaban-solo-server-0.1.0-SNAPSHOT/目录下。
在这里插入图片描述
AzkabanSingleServer(对于Azkaban solo‐server模式,Exec Server和Web Server在同一个进程中)

1.4.登录web页面

访问Web Server=>http://node-1:8081/ 默认用户名密码azkaban
在这里插入图片描述
在这里插入图片描述
1.5.初体验测试
http://node-1:8081/index登录=>Create Project=>Upload zip包 =>execute flow执行一步步操作即可。
创建两个文件one.job two.job,内容如下,打包成zip包。

vi one.job 

command=需要执行的命令
type=command
command=echo “this is job one”

vi two.job 

type=command
dependencies=one
command=echo “this is job two”

创建工程:
在这里插入图片描述
上传zip压缩包:
在这里插入图片描述
execute执行:
在这里插入图片描述
执行页面:
在这里插入图片描述
执行结果查看:
在这里插入图片描述
在这里插入图片描述

五、Azkaban使用实战

1.shell command调度

创建job描述文件

vi command2.job
#command.job
type=command
command=sh hello.sh

vi hello.sh

#!/bin/bash
date  > /root/hello.txt

将job资源文件打包成zip文件
在这里插入图片描述

通过azkaban的web管理平台创建project并上传job压缩包
首先创建Project
在这里插入图片描述
上传zip包
在这里插入图片描述
启动执行该job
在这里插入图片描述

2.job依赖调度

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

第一个job:foo.job

# foo.job
type=command
command=echo foo

第二个job:bar.job依赖foo.job

使用dependcies指明本次任务需要依赖的任务,只有本任务依赖的任务执行完了,本任务才可以执行。

# bar.job
type=command
dependencies=foo
command=echo bar

将所有job资源文件打到一个zip包中
在这里插入图片描述
在azkaban的web管理界面创建工程并上传zip包
启动工作流flow

3.HDFS任务调度

创建job描述文件

# fs.job
type=command
command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz

将job资源文件打包成zip文件
在这里插入图片描述
通过azkaban的web管理平台创建project并上传job压缩包
启动执行该job

4.MapReduse任务调度

mr任务依然可以使用command的job类型来执行
创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar)

# mrwc.job
type=command
command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop jar hadoop-mapreduceexamples-2.6.1.jar wordcount /wordcount/input /wordcount/azout

或者使用export临时声明环境变量

# mrwc.job
# mapreduce_wordcount.job
type=command
command=/export/servers/hadoop-2.7.5/bin/hadoop  jar hadoop-mapreduce-examples-2.7.5.jar wordcount /wc/input /wc/output

将所有 job 资源文件打到一个 zip 包中

在这里插入代码片在这里插入图片描述
在azkaban的web管理界面创建工程并上传zip包
启动job

5.HIVE脚本任务调度

创建job描述文件和hive脚本
Hive脚本: test.sql

use default;
drop table aztest;
create table aztest(id int,name string) row format delimited fields terminated by ',';
load data inpath '/aztest/hiveinput' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

Job描述文件:hivef.job

# hivef.job
type=command
command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'

将所有job资源文件打到一个zip包中创建工程并上传zip包,启动job

调度Spark任务Demo

Spark Streaming 从某个角度而言就是个定时任务调度系统,也就是我们说的微批处理。对于工作流调度器而言,无非就是每个周期(duration)在Driver端启动线程扫描MySQL,实现任务的分发和执行。

调度Spark任务Demo

在这里插入图片描述
编写代码
写一段简单的Spark代码,将程序打包

package com.test
import org.apache.spark.{SparkConf, SparkContext}
 
object AzkabanTest extends App{
  val conf = new SparkConf()
  .setMaster("local[2]")
  .setAppName("azkabanTest")
  val sc = new SparkContext(conf)
 
  val data = sc.parallelize(1 to 10)
  data.map{_ * 2}.foreach(println)
}
1
2
3
4
5
6
7
8
9
10
11
12

编写调度命令

vim test.job
type=command
command=/usr/install/spark/bin/spark-submit --class com.test.AzkabanTest test-1.0-SNAPSHOT.jar

将这两个文件以zip的形式打包在一起

zip -r xxx.zip azkabanTest  

上传工程
目前azkaban只支持zip包,其中要包括.job文件以及一些需要的工程和文件。

在这里插入图片描述

在这里插入图片描述
设置离线任务执行周期

如果需要的话可以设置离线任务的执行周期(类似于cron的功能)
在这里插入图片描述
任务通知

可以设置任务完成或失败进行邮箱通知等操作。
在这里插入图片描述
主界面
在这里插入图片描述
任务完成情况
在这里插入图片描述

任务log详情
在这里插入图片描述

6.定时任务调度

除了手动立即执行工作流任务外,azkaban也支持配置定时任务调度。开启方式如下:

首页选择待处理的project
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述图片中,选择左边schedule表示配置定时调度信息,选择右边execute表示立即执行工作流任务。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值