@zhangyy
2020-08-01T11:08:49.000000Z
字数 3158
阅读 122
协作框架
- 一:azkaban的概览
- 二:azkaban的概念
- 三:azkaban的编译
- 四:azkaban的单机版的安装
1、调度系统背景
一个完整的大数据分析系统通常都是由大量任务单元组成:shell脚本程序,mapreduce程序、
hive脚本、spark程序等。
各任务单元之间存在时间先后及前后依赖关系:先后关系、依赖关系、定时执行。
为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
2、常见调度系统
简单的任务调度:直接使用linux的crontab来定义、shell和python脚本实现
现成开源任务调度: ooize、azkaban和airflow等
复杂的任务调度:自研调度平台
参考官网:https://azkaban.github.io/
4、特点
兼容任何hadoop版本
容易使用的web ui
简介的web和http工作流的上传
项目库
工作流调度
模块化和插件化
授权和验证
用户action的跟踪
成功和失败的邮件报警
SLA警报和自动杀死任务
失败作业的重试
azkaban和oozie相对来说是市面上最流行的两种调度器。总体来说,ooize相比azkaban是一个重量级
的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器
azkaban是很不错的候选对象。具体对比如下:
功能
两者均可以调度mapreduce,pig,java,脚本工作流任务
两者均可以定时执行工作流任务
工作流定义
Azkaban使用Properties文件定义工作流
Oozie使用XML文件定义工作流
工作流传参
Azkaban支持直接传参,例如${input}
Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}
定时执行
Azkaban的定时执行任务是基于时间的
Oozie的定时执行任务基于时间和输入数据
资源管理
Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
Oozie暂无严格的权限控制
工作流执行
Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)
和multi server mode(executor server和web server可以部署在不同节点)
Oozie作为工作流服务器运行,支持多用户和多工作流
工作流管理
Azkaban支持浏览器以及ajax方式操作工作流
Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流
wget https://codeload.github.com/azkaban/azkaban/tar.gz/3.90.0
tar -zxvf 3.90.0
cd azkaban-3.90.0/
----
改编译源为 阿里云源
vim build.gradle
----
buildscript {
repositories {
mavenCentral()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
maven {
url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}
}
}
----
-----
./gradlew clean 清空编译
./gradlew installDist 编译并安装插件
编译但不运行测试
./gradlew build -x test
编译成功后,在根目录下{azkaban-solo-server、azkaban-web-server、azkaban-execserver}/
build/distributions目录下都会生成相应的压缩包,并将其copy到/home/azkaban3.57.0目录
下用于安装使用。
mkdir -p /root/azkban
cp ./azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
cp ./azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
cp ./azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
cp ./azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /root/azkaban
cd /root/azkaban
ls
du -sh *
cd ..
tar -zcvf azkaban3.90.tar.gz azkaban
scp azkaban3.90.tar.gz root@192.168.11.160:/root
登录:192.168.11.160
scp azkaban3.90.tar.gz root@192.168.11.161:/root
scp azkaban3.90.tar.gz root@192.168.11.162:/root
登录:192.168.11.162
tar -zxvf azkaban3.90.tar.gz
mkdir /opt/azkaban
cd azkaban/
tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
mv azkaban-solo-server-0.1.0-SNAPSHOT /opt/azkaban/azkaban-soloserver
cd /opt/azkaban/azkaban-soloserver
cd /opt/azkaban/azkaban-soloserver/conf
vim azkaban-users.xml
---
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user password="admin" roles="metrics,admin" username="admin"/> 添加这行
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
---
启动solo-azkaban
./bin/start-solo.sh
jps
访问:http://192.168.11.162:8081
用户名:admin
密码: admin
1、创建job(注意编码)
vim hello.job
type=command
command=echo 'hello_azkaban'
2、将job打包zip并上传
hello.zip
1、创建一个shell文件(注意编码)
vim shell.sh
-------------
文件名azshell.sh,内容如下:
#!/bin/bash
echo hello_azkaban >> /var/log/az.log
--------------