目录
1 背景
Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies 来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
1.1 Azkaban的特点
- 兼容任何版本的Hadoop
- 易上手的web页面
- 简单的工作流上传
- 方便设置任务之间的关系
- 调度工作流
- 模块化和可插插拔的插拔机制
- 认证/授权
- 可以杀死并重启工作流
- 失败和成功的电子邮件提醒
1.2 Azkaban的架构
- WebServer:整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、追踪工作流执行进度等一些列任务
- ExecutorServer: 负责具体的工作流的提交、执行,通过MySQL来协调任务的执行
- 关系型数据库(MySQL) : 存储大部分执行流状态,WebServer 和 ExecutorServer都需要访问数据库
2 Azkaban安装准备
unzip
[root@ifeng software]# unzip -o -d /home/ifeng/sourcecode/ azkaban-3.90.0.zip
chown
[root@ifeng sourcecode]# chown ifeng:ifeng azkaban-3.90.0/ -R
2.1 编译
# Build and install distributions
# ./gradlew installDist
# Build without running tests
./gradlew build installDist -x test
会去下载一个https://services.gradle.org/distributions/gradle-4.6-all.zip
但是由于网络原因,可能会下载失败
可以去, 手动下载并修改如下properties 文件
[root@ifeng wrapper]# pwd
/home/ifeng/sourcecode/azkaban-3.90.0/gradle/wrapper
[root@ifeng wrapper]# vi gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
等待编译20分钟吧…
2.2 安装包分析
会产生如下三个安装包
单机版:azkaban-solo-server
生产版:azkaban-web-server azkaban-exec-server
单机版安装包位置
2.3 安装启动
安装
tar -xzvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ~/app/
Start the solo server:
cd /home/ifeng/sourcecode/azkaban-3.90.0/azkaban-solo-server/build/install/azkaban-solo-server
bin/start-solo.sh
一定不要进入bin下启动
Azkaban solo server should be all set, by listening to 8081 port at default to accept incoming network
request. So, open a web browser and check out http://localhost:8081/ . The default login username and
password for the solo server are both azkaban which is configured in conf/azkaban-users.xml in the
resources folder of the solo server.
修改时区
/home/ifeng/app/azkaban/conf/azkaban.properties
default.timezone.id=Asia/Shanghai
修改用户
[ifeng@ifeng conf]$ cat azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user password="000000" roles="admin" username="ifeng"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
[ifeng@ifeng conf]$
3 创建Flow
- 创建 flow20.project. 里面写入以下版本信息
azkaban-flow-version: 2.0
- 创建 basic.flow. 写入以下格式内容
nodes:
- name: jobA
type: command
config:
command: echo “Hello Azkaban”
- 压缩并上传
Select the two files you’ve already created and right click to compress them into a zip file called Archive.zip. You can also create a new directory with these two files and then cd into the new directory and compress: zip -r Archive.zip . Please do not zip the new directory directly.
Make sure you have already created a project on Azkaban ( See Create Projects ). You can then upload Archive.zip to your project through Web UI ( See Upload Projects ).
Now you can click Execute Flow to test your first Flow 2.0 Azkaban project!
直接在本目录压缩 , 否则可能会造成路径问题
上传,JobA为上面Note中的名字
具体的log可以在Job List中的log查看
3.2 多个job依赖
nodes:
- name: jobC
type: noop
# jobC depends on jobA and jobB
dependsOn:
- jobA
- jobB
- name: jobA
type: command
config:
command: echo "This is an echoed text."
- name: jobB
type: command
config:
command: pwd
3.3 Hive脚本
command = hive
怎么都没成功,放一放
4 Azkaban Plugins
编译
前提条件 :
安装ant
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven
yum -y install ant
yum install ant*
nodejs
sudo yum install epel-release
sudo yum install nodejs
git
yum -y install git
dustjs-linkedin
npm install -g less dustjs-linkedin
移动到
tar开
[root@ifeng software]# tar -xzvf azkaban-plugins-\$\{git.tag\}.tar.gz -C /home/ifeng/app/azkaban/plugins/