Azkaban的囚徒——Azkaban安装和介绍

Azkaban简介

  • 为什么需要工作流调度器?

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

简单的任务调度:直接使用 linux 的 crontab 来定义,crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
其中:
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

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

  • 什么是Azkaban

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

它有如下功能特点:
  1、Web用户界面
  2、方便上传工作流
  3、方便设置任务之间的关系
  4、调度工作流
  5、认证/授权(权限的工作)
  6、能够杀死并重新启动工作流
  7、模块化和可插拔的插件机制
  8、项目工作区
  9、工作流和任务的日志记录和审计

  • azkaban调度的任务有可能有那些类型

1、shell脚本
2、java程序
3、MR程序
4、spark程序
5、hive的sql
6、python脚本
7、sqoop任务

Azkaban安装

  1. 下载Azkaban源码
    git clone https://github.com/azkaban/azkaban.git
  2. 安装Azkaban
    cd azkaban; ./gradlew build installDist
    这里可能回buiding蛮久
  3. 启动solo server
    cd azkaban-solo-server/build/install/azkaban-solo-server; bin/start-solo.sh
    启动完毕后,我们可以通过8081端口,查看启动的阿兹卡班。默认用户名和密码均为azkaban。

在这里插入图片描述

Azkaban配置

在conf文件夹内,有如下文件:

  • azkaban.private.properties用来存储类似mysql的密码。
  • azkaban.properties配置运行时的参数。
  • azkaban-users.xml配置用户信息。
  • global.properties作为共享属性传递给每个工作流和作业的全局静态属性。

azkaban.properties

在这里插入图片描述
一般来说不用改什么,下面几点可以注意一下:
azkaban.name:用来命名阿兹卡班,在多个azkaban实例的时候,用来区分。
default.timezone:指定时区,默认是洛杉矶,可以改成Asia/Shanghai
job.max.Xms:任务启动时的最大内存
job.max.Xmx:任务能获得的最大内存

其他参数详见:
https://azkaban.readthedocs.io/en/latest/configuration.html

azkaban-users.xml

在这里插入图片描述
user标签的配置如下:
在这里插入图片描述
role标签的配置如下:
在这里插入图片描述
特别说一下,permissions有这么几个等级:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/No_Game_No_Life_/article/details/89448945