Azkaban -- Azkaban的安装和使用

Azkaban介绍

  Azkaban是在LinkedIn上创建的用于运行Hadoop作业的批处理工作流作业调度程序。Azkaban通过工作依赖性解决订购问题,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。
  Azkaban的设计首先考虑了可用性。它已经在LinkedIn上运行了几年,并驱动了许多Hadoop和数据仓库流程。
  官网地址:https://azkaban.github.io/
  官网Doc:https://azkaban.readthedocs.io/en/latest/getStarted.html#

特性

  • 与任何版本的Hadoop兼容
  • 易于使用的Web UI
  • 简单的Web和HTTP工作流程上传
  • 项目工作区
  • 安排工作流程
  • 模块化且可插入
  • 认证与授权
  • 跟踪用户动作
  • 通过电子邮件通知失败和成功
  • SLA警报和自动终止
  • 重试失败的作业
    在这里插入图片描述

架构

在这里插入图片描述
  Azkaban由三个关键组件构成:

  1. AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、跟踪工作流执行进度等一系列任务。
  2. AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行。
  3. 关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。

安装

下载

  官网下载地址:https://azkaban.github.io/downloads.html,官网下载的是源码包,需要自己手动编译,或者去下载已经编译好的版本,主要是三个包:

  • azkaban-web-server-版本号.tar.gz
  • azkaban-executor-server-版本号.tar.gz
  • azkaban-sql-script-版本号.tar.gz

编译

  从官网或者GitHub下载的代码是源码,需要手动编译,Azkaban是使用Gradle而不是maven做依赖管理的,Gradle的安装使用可以参考:Gradle – 安装Gradle并集成到IDEA
  按照上面博客将Gradle安装集成到IDEA后,就可以进行编译工作了,这里提醒一句,一定要把镜像地址改成国内镜像,不然编译时下载依赖很可能会超时下不来。 编译的话,可以在Linux服务器环境使用命令编译,也可以在Windows系统使用工具编译,我就是在windows环境编译了,我直接在源码包下使用gradle命令编译,中间还是出了点问题,所以我是在IDEA中编译的。

Linux类系统编译

  类Linux系统编译,官网也是给了说明,如下:
在这里插入图片描述

Windows系统编译

  Windows系统编译,我是使用IDEA,打开源码的build.gradle,打开为project,然后我们在在IDEA的控制台输入gradlew build、gradlew clean、gradlew installDist,之后就等着下载依赖和编译吧,中间过程大概10-20分钟。
在这里插入图片描述
  编译结束后,我们主要关注如下三块,db(元数据检表语句)、exec-server(执行器)、web-server(调度器),我们可以将这三部分的build/install下的azkaban-exec-server和azkaban-web-server文件夹打包或者直接上传到服务器,这里注意,如果是直接上传服务器,需要手动给bin目录下的sh脚本赋可执行权限,不然启动报错。
在这里插入图片描述
在这里插入图片描述

安装

  将文件夹或者打好的包上传到服务器后,我们需要修改一些配置,这里我把文件夹改了下名字,azkaban-web-server改成了server,azkaban-executor-server改成了executor。
在这里插入图片描述

初始化元数据

  需要安装MySQL,分配用户和权限,这里就不再介绍了。然后找到db模块下的build/install/azkaban-db文件夹下的create-all-sql的脚本文件,去数据库中初始化元数据。
在这里插入图片描述

安装配置executor

安装配置web-server

验证

使用

使用说明

单任务

多任务

定时调度

调度Java、MapReduce、Hive、Spark等

二次开发

官方API

开源的包装好的API