azkaban

一、简介

场景:
在做离线数仓的时候需要按照 一定的顺序定时的执行一些固定的job。这个工作流程中 的任务调度就交给azkaban来做。
大数据中场常用的类似 工具还有:oozie ceontab airflow等

特性:

  1. 可以利用cron表达式保证job按照规定的时间进行执行
  2. 可以兼容 任意版本 的hadoop
  3. 提供了友好的webUI 界面,可以通过界面 直接操作job
  4. 基于Java开发,代码结构清晰,易于二次开发
  5. 提供认证和授权
  6. 重试失败的job

结构:
关系型数据库(MySQL)
AzkabanWebServer
AzkabanExecutorServer
在这里插入图片描述

1 关系型数据库(MySQL)

Azkaban使用数据库存储大部分状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。

AzkabanWebServer使用数据库的原因如下:

项目管理:项目、项目权限以及上传的文件。
执行流状态:跟踪执行流程以及执行程序正在运行的流程。
以前的流程/作业:通过以前的作业和流程执行以及访问其日志文件进行搜索。
计划程序:保留计划作业的状态。
SLA:保持所有的SLA规则
AzkabanExecutorServer使用数据库的原因如下:

访问项目:从数据库检索项目文件。
执行流程/作业:检索和更新正在执行的作业流的数据
日志:将作业和工作流的输出日志存储到数据库中。
交互依赖关系:如果一个工作流在不同的执行器上运行,它将从数据库中获取状态。
2 AzkabanWebServer

AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。并且Azkaban使用方便,Azkaban使用以.job为后缀名的键值属性文件来定义工作流中的各个任务,以及使用dependencies属性来定义作业间的依赖关系链。这些作业文件和关联的代码最终以*.zip的方式通过Azkaban UI上传到Web服务器上。

3 AzkabanExecutorServer

以前版本的Azkaban在单个服务中具有AzkabanWebServer和AzkabanExecutorServer功能,目前Azkaban已将AzkabanExecutorServer分离成独立的服务器,拆分AzkabanExecutorServer的原因有如下几点:

某个任务流失败后,可以更方便的将其重新执行
便于Azkaban升级
AzkabanExecutorServer主要负责具体的工作流的提交、执行,可以启动多个执行服务器,它们通过mysql数据库来协调任务的执行。

二、安装配置

安装所需资料已上传到资源中Azkaban
1.单机安装
由于azkaban基于Java开发,安装前确保jdk环境安装好

  1. 上传文件到Linux上的/opt/moudus/
  2. 解压 tar -zxf azkaban-solo-server-3.81.0-1-g304593d.tar.gz -C /opt/installs/
  3. 修改文件名字 mv azkaban-solo-server-3.81.0-1-g304593d azkaban-solo-server
  4. 修改conf目录下的azkaban.properties配置文件default.timezone.id=Asia/Shanghai #修改时区 jetty.port=8082 #配置azkabanweb服务器地址
  5. 修改plungs目录下的目录下的commonprivate.properties配置文件memCheck.enabled=false #关闭执行节点内存检查,默认如果执行节点内存小于6GB,不会提交任务
  6. 启动 需要在azkaban-solo-server目录下启动 输入:./bin/start-solo.sh
  7. 测试。在浏览器中输入主机的ip地址+8082 端口号访问。用户名和密码都是azkaban
  8. 关闭 ./bin/shutdown-solo.sh

2.分布式环境下安装
安装前必须保证JDK已经安装成功并且配置了环境变量
1.因为需要用到数据库,首先需要准备好数据库

  1. 安装数据库
  2. 创建一个数据库
  3. 导入数据库的建表语句
  4. 验证
--先将.sql文件上传到hadoop11 Linux服务器上的/opt/data/
create database azkaban;
use azkaban;
source /opt/data/create-all-sql-3.81.0-1-g304593d.sql
show tables;

2.同步需要安装分布式环境的三台电脑的时间
在三台服务器上分别执行

yum install -y ntp
ntpdate cn.pool.ntp.org
clock -w

2.1在hadoop11 上安装Executor-Server并scp(发送到12、13上)

  1. 上传文件到Linux上的/opt/moudus/
  2. 解压 tar zxvf azkaban-exec-server-3.81.0-1-g304593d.tar.gz -C /opt/installs/
  3. 修改文件名字 mv azkaban-exec-server-3.81.0-1-g304593d azkaban-exec-server
  4. 修改conf目录下的azkaban.properties配置文件
default.timezone.id=Asia/Shanghai
jetty.port=8082
azkaban.webserver.url=http://192.168.77.201:8082
mysql.host=192.168.77.201
mysql.database=azkaban
mysql.user=root
mysql.password=123456
  1. 修改plungs目录下的目录下的commonprivate.properties配置文件
memCheck.enabled=false
  1. 启动 需要在azkaban-solo-server目录下启动 输入:./bin/start-exec.sh
  2. 激活azkaban执行服务器(每次重启,都需要激活)
curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
  1. 测试。在浏览器中输入主机的ip地址+8082 端口号访问。用户名和密码都是azkaban
  2. 关闭 ./bin/shutdown-solo.sh
  3. 传送到12、13上无需做任何操作
scp -R azkaban-exec-server root@hadoop12:/opt/installs/
scp -R azkaban-exec-server root@hadoop13:/opt/installs/

2.2在hadoop11 上安装webServe

  1. 上传文件到Linux上的/opt/moudus/
  2. 解压 tar zxvf azkaban-web-server-3.81.0-1-g304593d.tar.gz -C /opt/installs/
  3. 修改文件名字 mv azkaban-web-server-3.81.0-1-g304593d azkaban-web-server
  4. 修改conf目录下的azkaban.properties配置文件
default.timezone.id=Asia/Shanghai
jetty.port=8082
mysql.host=192.168.77.201
mysql.database=azkaban
mysql.user=root
mysql.password=123456
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus #关闭对执行服务器内存检查-测试环境
  1. 启动 需要在azkaban-solo-server目录下启动 输入:./bin/start-exec.sh

  2. 测试。在浏览器中输入主机的ip地址+8082 端口号访问。用户名和密码都是azkaban

  3. 关闭 ./bin/shutdown-solo.sh

三、基础 使用

实战案例:

https://blog.csdn.net/qq_16146103/article/details/106207283
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值