Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
- Web用户界面
- 方便上传工作流
- 方便设置任务之间的关系
- 调度工作流
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 模块化和可插拔的插件机制
- 项目工作区
- 工作流和任务的日志记录和审计
Solo Server 模式是一个 all in one 的部署方式,适合测试环境,有如下优势:
- 安装简单:不需要 MySQL,使用 H2 作为持久化存储;
- 启动简单:Web 服务器和 Executor 服务器在同一个进程;
- 功能齐备:具备所有的功能;
部署流程
Step1. 从 git 上 Clone 仓库
git clone https://github.com/azkaban/azkaban.git
Step2. 部署
cd azkaban; ./gradlew build installDist
下载速度略慢,可以尝试使用代理。
Step3. 添加 HADOOP_HOME
# 如果是 Cloudera 环境,以 5.8.x 为例
export HADOOP_HOME=/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/lib/hadoop
Step4. 启动服务
cd azkaban-solo-server/build/install/azkaban-solo-server; bin/start-solo.sh
Step5. 停止服务
bin/shutdown-solo.sh
一个完整的部署应该具备以下目录:
Folder | Description |
---|---|
bin | The scripts to start/stop Azkaban jetty server |
conf | The configuration files for Azkaban solo server |
lib | The jar dependencies for Azkaban |
extlib | Additional jars that are added to extlib will be added to Azkaban's classpath |
plugins | the directory where plugins can be installed |
web | The web (css, javascript, image) files for Azkaban web server. |
在 conf
目录中,必须存在 3 个文件:
azkaban.private.properties
- Runtime 情况下的参数;
azkaban.properties
- Runtime 情况下的参数;
global.properties
- 全局静态属性,共享给所有 workflow 和 job;
azkaban-users.xml
- 授权配置,管理用户和角色之间的映射;如果XmLUserManager 没有配置使用该文件,则默认不启用该文件内的配置;
azkaban.properties
是主配置文件。
Step5. 启用 UserManager
Azkaban 使用 UserManager 组件提供基于用户和角色的权限管理。默认情况下,Azkaban 使用 XmlUserManager
,该 plugin 从 azkaban.properties
的 _azkaban-users.xml_
获取 username/passwords。
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
默认的测试用用户名和密码皆为 azkaban
。
Step7. 启动 Web Server
azkaban.properties
的以下配置项用于配置 jetty。
jetty.maxThreads=25
jetty.ssl.port=8081
执行 bin/start-solo.sh
启动 Web Server,执行 bin/shutdown-solo.sh
进行停止。
网友评论