Azkaban -- Azkaban的安装和使用
向导Azkaban介绍特性安装下载编译安装验证使用使用说明单任务多任务定时调度调度Java、MapReduce、Hive、Spark等二次开发官方API开源的包装好的APIAzkaban介绍 Azkaban是在LinkedIn上创建的用于运行Hadoop作业的批处理工作流作业调度程序。Azkaban通过工作依赖性解决订购问题,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。 Azkab
向导
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由三个关键组件构成:
- AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、跟踪工作流执行进度等一系列任务。
- AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行。
- 关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。
安装
下载
官网下载地址:https://azkaban.github.io/downloads.html
编译好的:https://github.com/azkaban/azkaban/releases
官网下载的是源码包,需要自己手动编译,或者去下载已经编译好的版本,主要是三个包:
- 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
- 进入executor/conf目录下,修改azkaban.properties,修改mysql连接、用户名、密码信息即可。
- 在之前的版本,应该是3.0之前,除了要修改mysql信息外,还需要配置ssl,但是3.0之后是不需要了,就改mysql连接信息就可以了。
- 启动executor,./bin/start-exec.sh
- 在3.x版本,启动了executor之后,还需要激活executor,否则web-server检测不到。激活executor只需要curl一下这个地址,或者浏览器访问下这个地址即可。其中localhost和port需要改为对应的地址和端口,至于端口号,在启动后会有一个executor.port的文件,cat一下可以看到此端口号,然后请求下面路径即可。
curl -G "http://localhost:port/executor?action=activate"
//或者浏览器直接访问:
http://localhost:port/executor?action=activate
5. 激活后就算启动完成了,可以jps看下
安装配置web-server
- 进入server/conf目录下,修改azkaban.properties,修改mysql连接、用户名、密码信息即可。
- 和上面一样,不再不需要配置ssl了。
- 启动server,./bin/start-web.sh
- 启动后去页面验证,默认端口8081
- 默认有两个用户,在server/conf/azkaban-users.xml中配置,也可以自己添加用户
使用
使用说明
Azkaban的任务是以job文件为单位的,一个job文件一个任务,然后把所有任务打成一个zip包在页面上传,之后可以执行也可以定时执行。
Azkaban内置的任务类型支持command、java,虽然只有两种,但是一个command其实就几乎代替了所有类型。。。
单任务
- 创建job描述文件,vim first.job
#first.job
type=command
command=echo 'this is my first job'
- 将job资源文件打包成zip文件,在webUI上传
- 单一执行或者调度执行
- 查看结果
多任务
- 创建多job,通过dependencies字段配置依赖关系。
#first.job
type=command
command=echo 'first job'
#second.job
type=command
command=echo 'second job'
dependencies=first
#third.job
type=command
command=echo 'third job'
dependencies=first
#fourth.job
type=command
command=echo 'fourth job'
dependencies=second,third
- 将job资源文件打包成zip文件,在webUI上传
- 执行
- 查看结果
调度Java、MapReduce、Hive、Spark等
和上面的一样的道理,可以使用java -jar命令提交或者spark-submit提交,反正就是写好job文件,写好提交命令,一样打成zip包提交,执行或者调度执行就好。
二次开发
因为我司需求想集成一个调度框架,对于azkaban我们就需要web应用通过api来操作任务、调度任务、查看任务等等,所以我们在官方api纸上还需要包装下通用api。
官方API
官方API文档地址:https://azkaban.readthedocs.io/en/latest/ajaxApi.html
开源的包装好的API
封装好的API,GitHub地址:https://github.com/shirukai/azkaban-java-api.git
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)