[关闭]
@zhangyy 2020-08-01T11:08:49.000000Z 字数 3158 阅读 124

Azkaban 协作框架

协作框架


  • 一:azkaban的概览
  • 二:azkaban的概念
  • 三:azkaban的编译
  • 四:azkaban的单机版的安装

一:azkaban的概览

  1. 1、调度系统背景
  2. 一个完整的大数据分析系统通常都是由大量任务单元组成:shell脚本程序,mapreduce程序、
  3. hive脚本、spark程序等。
  4. 各任务单元之间存在时间先后及前后依赖关系:先后关系、依赖关系、定时执行。
  5. 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
  6. 2、常见调度系统
  7. 简单的任务调度:直接使用linuxcrontab来定义、shellpython脚本实现
  8. 现成开源任务调度: ooizeazkabanairflow
  9. 复杂的任务调度:自研调度平台

二:azkaban的概念

  1. 参考官网:https://azkaban.github.io/

image.png-136.9kB

image.png-148.4kB

  1. 4、特点
  2. 兼容任何hadoop版本
  3. 容易使用的web ui
  4. 简介的webhttp工作流的上传
  5. 项目库
  6. 工作流调度
  7. 模块化和插件化
  8. 授权和验证
  9. 用户action的跟踪
  10. 成功和失败的邮件报警
  11. SLA警报和自动杀死任务
  12. 失败作业的重试

三: azkaban和oozie的比较

  1. azkabanoozie相对来说是市面上最流行的两种调度器。总体来说,ooize相比azkaban是一个重量级
  2. 的任务调度系统,功能全面,但配置使用也更复杂。如果可以不在意某些功能的缺失,轻量级调度器
  3. azkaban是很不错的候选对象。具体对比如下:
  4. 功能
  5. 两者均可以调度mapreduce,pig,java,脚本工作流任务
  6. 两者均可以定时执行工作流任务
  7. 工作流定义
  8. Azkaban使用Properties文件定义工作流
  9. Oozie使用XML文件定义工作流
  10. 工作流传参
  11. Azkaban支持直接传参,例如${input}
  12. Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}
  13. 定时执行
  14. Azkaban的定时执行任务是基于时间的
  15. Oozie的定时执行任务基于时间和输入数据
  16. 资源管理
  17. Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
  18. Oozie暂无严格的权限控制
  19. 工作流执行
  20. Azkaban有两种运行模式,分别是solo server mode(executor serverweb server部署在同一台节点)
  21. multi server mode(executor serverweb server可以部署在不同节点)
  22. Oozie作为工作流服务器运行,支持多用户和多工作流
  23. 工作流管理
  24. Azkaban支持浏览器以及ajax方式操作工作流
  25. Oozie支持命令行、HTTP RESTJava API、浏览器操作工作流

三:azkaban的编译

  1. wget https://codeload.github.com/azkaban/azkaban/tar.gz/3.90.0
  2. tar -zxvf 3.90.0
  3. cd azkaban-3.90.0/
  4. ----
  5. 改编译源为 阿里云源
  6. vim build.gradle
  7. ----
  8. buildscript {
  9. repositories {
  10. mavenCentral()
  11. maven {
  12. url 'http://maven.aliyun.com/nexus/content/groups/public/'
  13. maven {
  14. url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
  15. }
  16. }
  17. }
  18. ----
  19. -----
  20. ./gradlew clean 清空编译

image.png-124.9kB

image.png-79kB


  1. ./gradlew installDist 编译并安装插件

image.png-57.9kB

image.png-48.4kB


  1. 编译但不运行测试
  2. ./gradlew build -x test

image.png-49.4kB

  1. 编译成功后,在根目录下{azkaban-solo-serverazkaban-web-serverazkaban-execserver}/
  2. build/distributions目录下都会生成相应的压缩包,并将其copy到/home/azkaban3.57.0目录
  3. 下用于安装使用。

  1. mkdir -p /root/azkban
  2. cp ./azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
  3. cp ./azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
  4. cp ./azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /root/azkaban
  5. cp ./azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz /root/azkaban

image.png-38.4kB


  1. cd /root/azkaban
  2. ls
  3. du -sh *
  4. cd ..
  5. tar -zcvf azkaban3.90.tar.gz azkaban
  6. scp azkaban3.90.tar.gz root@192.168.11.160:/root
  7. 登录:192.168.11.160
  8. scp azkaban3.90.tar.gz root@192.168.11.161:/root
  9. scp azkaban3.90.tar.gz root@192.168.11.162:/root

image.png-49.8kB

image.png-26.2kB

image.png-19.4kB


四:azkaban单机版安装:

  1. 登录:192.168.11.162
  2. tar -zxvf azkaban3.90.tar.gz

image.png-21.2kB

  1. mkdir /opt/azkaban
  2. cd azkaban/
  3. tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
  4. mv azkaban-solo-server-0.1.0-SNAPSHOT /opt/azkaban/azkaban-soloserver
  5. cd /opt/azkaban/azkaban-soloserver

image.png-31.4kB

  1. cd /opt/azkaban/azkaban-soloserver/conf
  2. vim azkaban-users.xml
  3. ---
  4. <azkaban-users>
  5. <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  6. <user password="metrics" roles="metrics" username="metrics"/>
  7. <user password="admin" roles="metrics,admin" username="admin"/> 添加这行
  8. <role name="admin" permissions="ADMIN"/>
  9. <role name="metrics" permissions="METRICS"/>
  10. </azkaban-users>
  11. ---

  1. 启动solo-azkaban
  2. ./bin/start-solo.sh
  3. jps

image.png-41.2kB

  1. 访问:http://192.168.11.162:8081

image.png-29.6kB

  1. 用户名:admin
  2. 密码: admin

image.png-35.7kB


五:azkaban的command job案例

  1. 1、创建job(注意编码)
  2. vim hello.job
  3. type=command
  4. command=echo 'hello_azkaban'

  1. 2、将job打包zip并上传
  2. hello.zip

image.png-41.5kB

image.png-40.4kB

image.png-40.8kB

image.png-51.2kB

六:azkaban 调度部署脚本

  1. 1、创建一个shell文件(注意编码)
  2. vim shell.sh
  3. -------------
  4. 文件名azshell.sh,内容如下:
  5. #!/bin/bash
  6. echo hello_azkaban >> /var/log/az.log
  7. --------------

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注