Azkaban:大数据任务调度与编排工具的安装与使用

        在当今大数据时代,数据处理和分析任务变得越来越复杂。一个完整的大数据分析系统通常由大量任务单元组成,如 shell 脚本程序、mapreduce 程序、hive 脚本、spark 程序等。这些任务单元之间存在时间先后及前后依赖关系,为了高效地组织和执行这些复杂的任务,需要一个强大的工作流调度系统。Azkaban 就是这样一个任务调度和编排工具,它可以帮助我们轻松地管理和执行大数据任务。本文介绍了 Azkaban 的简介、体系结构、安装步骤、使用方法等方面的内容。

一、Azkaban 简介

(一)遇到的问题及解决方案

在大数据处理过程中,我们经常会遇到以下问题:

  1. 多个脚本执行有顺序要求。例如,在启动 Hadoop 集群时,需要先启动 Zookeeper 集群,再启动 HDFS,接着启动 YARN,最后启动日志系统。
  2. 任务之间存在依赖关系。某些任务需要在其他任务完成后才能执行。
  3. 需要定时执行任务。例如,每天定时执行数据备份任务。

为了解决这些问题,我们需要一个任务编排工具。Azkaban 就是这样一个工具,它可以帮助我们组织和管理大数据任务,确保任务按照正确的顺序和时间执行。

(二)功能特点

  1. 任务调度和编排:Azkaban 可以调度和编排各种类型的任务,包括 shell 脚本、MapReduce 任务、Hive 脚本、Spark 任务等。
  2. 任务依赖管理:Azkaban 可以管理任务之间的依赖关系,确保任务按照正确的顺序执行。
  3. 定时任务执行:Azkaban 可以设置任务在特定的时间自动执行。
  4. 可视化管理界面:Azkaban 提供了一个可视化的管理界面,方便用户管理和监控任务的执行情况。

(三)与其他类似工具的比较

  1. Oozie:Oozie 也是一个任务调度和编排工具,但它比较笨重,安装包较大,功能强大但使用起来不太方便。
  2. DolphinScheduler:DolphinScheduler 是一个流行的任务调度工具,它具有易用性和强大的功能。与 Azkaban 相比,DolphinScheduler 在一些方面更加灵活和易于扩展。

二、Azkaban 的体系结构

Azkaban 主要由三部分组成:

(一)WebServer

  1. 功能:WebServer 是 Azkaban 的核心组件之一,它提供了一个可视化的管理界面,方便用户管理和监控任务的执行情况。WebServer 还负责分发作业和调度作业。
  2. 接口:WebServer 暴露了一系列的 RESTful API,方便用户通过编程的方式与 Azkaban 进行交互。

(二)ExecServer

  1. 功能:ExecServer 是 Azkaban 的执行引擎,它负责执行用户提交的任务。ExecServer 对 WebServer 暴露 API,提供执行作业的功能。
  2. 与 WebServer 的关系:WebServer 和 ExecServer 之间通过 API 进行通信。WebServer 负责分发作业和调度作业,ExecServer 负责执行作业。

(三)MySQL

  1. 功能:MySQL 是 Azkaban 的数据库,用于存储任务的元数据、任务的执行状态等信息。MySQL 实现了 Web 和 Exec 之间的数据共享和部分状态的同步。
  2. 数据库设计:Azkaban 的数据库设计简洁明了,主要包括任务表、任务执行状态表、任务依赖关系表等。通过这些表,Azkaban 能够有效地管理和跟踪任务的执行情况。
  3. 数据库配置:在安装 Azkaban 时,需要在 MySQL 中创建一个名为 azkaban 的数据库,并执行相应的 SQL 脚本,生成元数据。

三、Azkaban 的安装步骤

Azkaban 的安装可以分为两种方式:使用源码安装和使用安装包安装。下面以使用安装包安装为例,介绍 Azkaban 的安装步骤。

通过网盘分享的文件:azkaban-3.56.0.zip

(一)上传和解压安装包

  1. 使用命令 yum install unzip 安装解压工具。
  2. 把 azkaban - 3.56.0.zip 拉到 /opt/moudles/ 目录下
  3. 使用命令 unzip azkaban - 3.56.0.zip - d /opt/installs/ 解压安装包到指定目录。
  4. 移动到指定位置:cd /opt/installs/
  5. 重命名:mv azkaban - 3.56.0/ azkaban
yum install unzip

unzip azkaban-3.56.0.zip -d /opt/installs/

cd /opt/installs/

mv azkaban-3.56.0/ azkaban

(二)生成 MySQL 元数据

在 MySQL 中创建一个名为 azkaban 的数据库:

create database azkaban CHARACTER SET UTF8;

在 MySQL 中执行 SQL 脚本

source /opt/installs/azkaban/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;

或者在文件夹中解压 azkaban-3.56.0.zip

总共29个表,是Azkaban的元数据

(三)配置 web - server

进入 web - server 文件夹:

cd /opt/installs/azkaban/web-server

在web-server文件夹下:

执行该命令生成keystore 文件

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

密码默认设置为 123456,输入 Y 确认。

查看文件

修改web-server 下的conf 下的 azkaban.properties文件:

# Azkaban Personalization Settings
azkaban.name=YanGe的迈巴赫
azkaban.label=9.9包邮
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
# 此处需要编写绝对路径,如果跟我的安装路径一样,不需要改
web.resource.dir=/opt/installs/azkaban/web-server/web
# 时区默认是美国时区,修改为上海时区
default.timezone.id=Asia/Shanghai

# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/installs/azkaban/web-server/conf/azkaban-users.xml

# Loader for projects
executor.global.properties=/opt/installs/azkaban/web-server/conf/global.properties
azkaban.project.dir=projects
# 配置mysql数据库连接的
database.type=mysql
mysql.port=3306
mysql.host=bigdata01
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081

# 此处是我们的生成的秘钥密码
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

# mail settings
#mail.sender=mx543042252@163.com
#mail.host=smtp.163.com
#mail.user=mx543042252@163.com
#mail.password=KFJYOIGXRIVFFIKP
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.

# enduser -> myazkabanhost:443 -> proxy -> localhost:8081

# when this parameters set then these parameters are used to generate email links.

# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache

# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
azkaban.native.lib=false
# Azkaban plugin settings

azkaban.jobtype.plugin.dir=plugins/jobtypes

注意要配置jetty

web-server/conf 目录下 azkaban-users.xml

<user password="admin" roles="admin,metrics" username="admin" />

(四)配置 exec - server

修改 exec - webserver 下的 conf 下的 azkaban.properties 文件:

# Azkaban Personalization Settings
azkaban.name=Azkaban
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/opt/installs/azkaban/web-server/web/
default.timezone.id=Asia/Shanghai

# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/installs/azkaban/web-server/conf/azkaban-users.xml

# Loader for projects
executor.global.properties=/opt/installs/azkaban/exec-server/conf/global.properties
azkaban.project.dir=projects/
azkaban.execution.dir=execution/
executor.flow.threads=30
flow.num.job.threads=10
job.log.chunk.size=100
job.log.backup.index=10
job.max.Xms=1
job.max.Xmx=2
azkaban.server.flow.max.running.minutes=-1



# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=bigdata01
mysql.database=azkaban
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30


# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

# JMX stats
jetty.connector.stats=true
executor.connector.stats=true

azkaban.native.lib=lib/
#azkaban.jobtype.plugin.dir=plugins/jobtypes


# uncomment to enable inmemory stats for azkaban
#executor.metric.reports=true
#executor.metric.milisecinterval.default=60000

修改 exec - webserver 下插件下的一个配文件 

plugins/jobtypes/commonprivate.properties

set execute-as-user
execute.as.user=false
memCheck.enabled=false

修改驱动包:删除旧的 MySQL 驱动包,替换为新的驱动包。在 web - server 和 exec - server 两个文件夹下的 lib 目录中进行操作。

cd /opt/installs/azkaban/exec-server/lib
rm -rf mysql-connector-java-5.1.28.jar

cp /opt/installs/sqoop/lib/mysql-connector-java-8.0.26.jar ./


cd /opt/installs/azkaban/web-server/lib
rm -rf mysql-connector-java-5.1.28.jar

cp /opt/installs/sqoop/lib/mysql-connector-java-8.0.26.jar ./

(五)修改执行权限

需要将exec-server下以及 web-server 下所有的执行脚本都赋权限

修改 web - server 下的执行权限:

cd /opt/installs/azkaban/web-server/bin
chmod 777 start-web.sh shutdown-web.sh
cd internal/
chmod 777 internal-start-web.sh util.sh 

修改 exec - server 下的执行权限:

cd /opt/installs/azkaban/exec-server/bin
chmod 777 start-exec.sh shutdown-exec.sh
cd internal/
chmod 777 internal-start-executor.sh util.sh 

(六)启动 web - server 和 exec - server

cd   /opt/installs/azkaban-3.56.0/web-server/bin
./start-web.sh

cd   /opt/installs/azkaban-3.56.0/exec-server/bin
./start-exec.sh

四、Azkaban 的使用

需要注意的点:

1. azkaban的job流文件,后缀是.job

        1) type属性 必须赋值

        值有:command,java,pig

2. azkaban执行的job必须要提前打包,打包的格式必须是zip格式

        不能打包文件夹,打包文件

3. 流文件里的书写格式:

        1)一定要注意行末不要有空格

        2)编码集的问题,如果在window上实在不行,可以上传到linux进行zip压缩,然后下载到windows上,再上传到azkaban上

(一)创建项目

  1. 登录 Azkaban 的 WebServer,进入管理界面。
  2. 点击 “Create Project” 按钮,创建一个新的项目。
  3. 输入项目名称、描述等信息,并选择项目的类型(如命令行任务、Java 任务等)。

Name 不能是中文的

Description 不能为空,可以是中文

(二)编写 job 任务

  1. 在项目中创建一个新的 job 文件,后缀为.job。
  2. job 文件的格式如下:
type=command
command=echo "hello world"

使用windows编辑这个文件的时候,一般要注意,格式,需要是unix:

(三)打包和上传

  1. 将编写好的 job 文件打包成 zip 格式,注意不能打包文件夹,只能打包文件。
  2. 在 Azkaban 的管理界面中,选择项目,点击 “Upload” 按钮,上传打包好的文件。

(四)错误修复

如果执行时报错

在exec-server中,修改配置文件 azkaban.proerties 添加如下代码,注意安装路径

azkaban.jobtype.plugin.dir=/opt/installs/azkaban/exec-server/plugins/jobtypes

重启exec-server即可。

(五)执行任务

  1. 在项目中选择要执行的任务,点击 “Execute” 按钮,启动任务的执行。
  2. 可以在任务的执行日志中查看任务的执行情况。

五、总结

        Azkaban 是一个强大的任务调度和编排工具,它可以帮助我们轻松地组织和管理大数据任务,提高数据处理的效率和可靠性。本文介绍了 Azkaban 的简介、体系结构、安装步骤、使用方法等方面的内容,希望对大家有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/885861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 每日一题:Crack The Safe

写在前面&#xff1a; 学期真的忙起来了&#xff0c;我的两个社团也在上一周终于完成了大部分招新活动。虽然后面有即将到来的期中考试和求职&#xff0c;但希望能有时间将帖子的频率提上去吧&#xff08;真的尽量因为从做题思考到写博客讲解思路需要大量的时间&#xff0c;在…

当人工智能拥抱餐饮业,传统与创新的交融

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 今天我们要聊一个充满烟火气的行业&#x…

Threejs绘制圆锥体

上一章节实现了胶囊体的绘制&#xff0c;这节来绘制圆锥体&#xff0c;圆锥体就是三角形旋转获得的&#xff0c;如上文一样&#xff0c;先要创建出基础的组件&#xff0c;包括场景&#xff0c;相机&#xff0c;灯光&#xff0c;渲染器。代码如下&#xff1a; initScene() {this…

信息安全工程师(22)密码学网络安全应用

前言 密码学在网络安全中的应用极为广泛且深入&#xff0c;它通过多种技术手段确保数据的机密性、完整性和真实性。 一、数据加密 对称加密&#xff1a; 定义&#xff1a;使用相同的密钥进行加密和解密的过程。特点&#xff1a;加密和解密速度快&#xff0c;适用于大数据量的加…

网站集群批量管理-密钥认证与Ansible模块

一、集群批量管理-密钥认证 1、概述 管理更加轻松&#xff1a;两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景)&#xff1a; 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…

websocket集群部署遇到的一些事

最近刚好有个场景&#xff0c;业务处理一份报告需要关注实时处理的进度。 本来打算使用前端轮训方式&#xff0c;但是考虑到这样效率比较低&#xff0c;也无法精确知道处理进度&#xff0c;就想到用websocket和前端实时交互&#xff0c;进度有更新就通知前端&#xff0c;避免了…

视频集成与融合项目中需要视频编码,但是分辨率不兼容怎么办?

在众多视频整合项目中&#xff0c;一个显著的趋势是融合多元化的视频资源&#xff0c;以实现统一监管与灵活调度。这一需求促使项目团队不断探索新的集成方案&#xff0c;确保不同来源的视频流能够无缝对接&#xff0c;共同服务于统一的调看与管理平台&#xff0c;进而提升整体…

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址&#xff1a;https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能&#xff0c;在会话窗口底部&#xff0c;显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等&#xff1a; &#xff08;完整窗口&#xff0…

GAMES101(17~18节,物理材质模型)

材质 BRDF 材质&#xff1a;决定了光线与物体不同的作用方式 BRDF定义了物体材质,包含漫反射和镜面部分 BSDF &#xff08;scattering散射&#xff09; BRDF&#xff08;reflect反射&#xff09; BTDF 光线打击到物体上会向四面八方散射 反射 光线打击到物体上反射出去…

MATLAB案例 | Copula的密度函数和分布函数图

本文介绍各种类型&#xff08;Gaussian、t、Gumbel、Clayton、Frank&#xff09;Copula的密度函数和分布函数图的绘制 完整代码 clc close all clear%% ********************计算Copula的密度函数和分布函数图************************ [Udata,Vdata] meshgrid(linspace(0,1…

C#自定义工具类-数组工具类

目录 数组工具类基本操作 1.排序&#xff1a;升序&#xff0c;降序 2.查找 1&#xff09;查找最值&#xff1a;最大值&#xff0c;最小值 2&#xff09;查找满足条件的单个对象 3&#xff09;查找满足条件的所有对象 4&#xff09;选取数组中所有对象的某一字段 完整代…

查缺补漏----程序查询方式和中断方式计算题

1.程序查询方式 总结下来就是&#xff1a; 必须在外设传输完端口大小的数据时访问端口&#xff0c;以防止数据未被及时读出而丢失。 占CPU总时间&#xff1a;就是某段时间内设备用了多少时钟周期/PCU有多少个时钟周期 CPU的时钟周期数&#xff1a;就看主频&#xff0c;主频表示…

大数据开发--1.1大数据概论

目录 一.大数据的概念 什么是大数据&#xff1f; 二. 大数据的特点 三. 大数据应用场景 四. 大数据分析业务步骤 大数据分析的业务流程&#xff1a; 五.大数据职业规划 职业方向 岗位技术要求 六. 大数据学习路线 一.大数据的概念 什么是大数据&#xff1f; 数据 世界…

Spring Boot技术:构建高效网上购物平台

第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析&#xff0c;这样做的目的就是使用最小成本解决最大问题&#xff0c;一旦程序开发满足用户需要&#xff0c;带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…

车辆重识别(注意力 U-Net:学习在哪些区域寻找胰腺)论文阅读2024/10/01

什么是注意力机制&#xff1f; 什么是加性注意力&#xff1f; 大致说一下流程&#xff1a; 对于一张特征图来说&#xff0c;对于这张图中的每一个像素向量&#xff08;例如a&#xff09;&#xff0c;计算该向量与所有像素向量的相似度&#xff0c;对这些相似度进行激活函数…

【重学 MySQL】四十五、数据库的创建、修改与删除

【重学 MySQL】四十五、数据库的创建、修改与删除 一条数据存储的过程数据输入数据验证数据处理数据存储数据持久化反馈与日志注意事项 标识符命名规则基本规则长度限制保留字与特殊字符命名建议示例 MySQL 中的数据类型创建数据库创建数据库时指定字符集和排序规则 查看数据库…

数据库重建索引的作用?

重建索引是数据库管理中的一个重要操作&#xff0c;主要用于优化数据库性能和提高查询效率。以下是重建索引的一些主要用途&#xff1a; 提高查询性能&#xff1a;随着时间的推移&#xff0c;数据的插入、更新和删除会导致索引碎片化&#xff0c;重建索引可以减少碎片&#xf…

DNS with libevent

DNS with libevent: high-level and low-level functionality libevent提供了少量用于解析DNS名字的API&#xff0c;以及用于实现简单DNS服务器的机制。 我们从用于名字查询的高层机制开始介绍&#xff0c;然后介绍底层机制和服务器机制。 Portable blocking name resolution…

15年408计算机网络

第一题&#xff1a; 解析&#xff1a; 接收方使用POP3向邮件服务器读取邮件&#xff0c;使用的TCP连接&#xff0c;TCP向上层提供的是面向连接的&#xff0c;可靠的数据传输服务。 第二题&#xff1a; 解析&#xff1a;物理层-不归零编码和曼彻斯特编码 编码1&#xff1a;电平在…

CSS中字体图标的使用

引言&#xff1a; 在网页设计当中&#xff0c;会有很多很简洁的图标&#xff0c;比如箭头&#xff0c;照相机&#xff0c;放大镜等 这些大概率都是使用字体图标来完成的&#xff0c;因为字体图标比较简洁高效&#xff0c;不会像图片一样需要向浏览器请求数据。那么字体图标该…