使用azkaban调度spark任务

Azkaban是一种类似于Oozie的工作流控制引擎,可以用来解决多个Hadoop(或Spark等)离线计算任务之间的依赖关系问题。

也可以用其代替cron来对周期性任务进行调度,并且更为直观,可靠,同时提供了美观的可视化管理界面。

下文将对azkaban对spark离线任务调度进行简要说明。

一. 简介

该部分内容可参考官方文档:http://azkaban.github.io/azkaban/docs/latest/#overview

azkaban由三部分构成:

  • Relational Database(Mysql)
  • Azkaban Web Server
  • Azkaban Executor Server

这里写图片描述

Relational Database(Mysql)

azkaban将大多数状态信息都存于Mysql中,Azkaban Web Server 和 Azkaban Executor Server也需要访问DB。

Azkaban Web Server

提供了Web UI,是azkaband的主要管理者,包括 project 的管理,认证,调度,对工作流执行过程的监控等。

Azkaban Executor Server

调度工作流和任务,纪录工作流活任务的日志,之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级。

可调度任务类型

  • linux命令
  • 脚本
  • java程序
  • hadoop MR
  • hive

创建工作

  1. 创建工作任务
    创建.job为后缀的文件,type是工作任务类型执行会输出 Hello World

    vim hello.job
    type=command
    command=echo "Hello World"
    
  2. 创建工作流
    两个工作任务,通过dependencies进行关联

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

    工作流如下:
    将会先调用foo再调用bar。

    这里写图片描述

二. 调度Spark任务Demo

创建一个新的project

创建新工程

编写代码 写一段简单的Spark代码,将程序打包

1
2
3
4
5
6
7
8
9
10
11
12
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)
}

编写调度命令

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详情

这里写图片描述

定时任务调用情况图

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值