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 unzipunzip 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 settingsazkaban.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=trueazkaban.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.jarcp /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.jarcp /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 的简介、体系结构、安装步骤、使用方法等方面的内容,希望对大家有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAL 网络提取层(Network Abstraction Layer)

1.NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中&#xff0c;无论是存储还是网络传输&#xff0c;H264 原始码流是由一个接一个 NALU&#xff08;NAL Unit&#xff09; 组成&#xff0c;整个系统框架被分为两个层面&#xff1a;视频编码层面&#…

Linux 实用工具Axel安装及使用教程(支持多线程下载)

一、Axel 简介 Axel 是一个轻量级的命令行下载加速器&#xff0c;旨在提高文件下载速度。 多线程下载: Axel 可以同时使用多个连接来下载文件&#xff0c;从而加快下载速度。断点续传: 支持中断后继续下载&#xff0c;避免重新开始下载整个文件。轻量级: 资源占用少&#xff0c…

YOLOv1–v11: 版本演进及其关键技术解析

最新消息&#xff1a;Yolo11发布最新版本2024.10 YOLO (You Only Look Once) 是一种高效的目标检测算法&#xff0c;自其初代发布以来&#xff0c;经过多次迭代&#xff0c;逐步提升了检测速度和精度。本文将详细介绍 YOLO 从 v1 到 v11 的各个版本&#xff0c;涵盖每个版本的发…

谨防火灾!电瓶车检测算法助力城市/小区/园区多场景安全管理精细化、智能化

随着人工智能技术的快速发展&#xff0c;AI智能分析网关V4在电瓶车检测领域的应用日益广泛。这一技术通过深度学习、计算机视觉等先进算法&#xff0c;实现了对电瓶车及其相关行为的智能识别和分析&#xff0c;为电瓶车的管理和应用提供了强大的技术支持。 一、电瓶车检测算法…

测试用例的进阶二

1. 按开发阶段划分 1.1 测试金字塔 从上到下&#xff0c;对于测试人员代码就是要求越来越低&#xff1b; 从下到上&#xff0c;越来越靠近用户&#xff1b; 从下到上&#xff0c;定位问题的成本越来越高&#xff1b; 1.2 单元测试(Unit Testing) 单元测试是对软件组成单元进…

1.8 物理层下的传输媒体

欢迎大家订阅【计算机网络】学习专栏&#xff0c;开启你的计算机网络学习之旅&#xff01; 文章目录 1 导引型传输媒体1.1 双绞线1.2 同轴电缆1.3 光缆 2 非导引型传输媒体2.1 无线电微波通信2.2 多径效应2.3 卫星通信2.4 无线局域网 在数据通信系统中&#xff0c;传输媒体是发…

在线PDF怎么转换成JPG图片?分享14种转换操作!

作为一名社畜&#xff0c;俺也经常要将PDF转换为图片格式&#xff01; 如何进行快速转换&#xff0c;包括电脑端、在线端和手机端&#xff0c;今天俺就测评了50款工具&#xff0c;给你得出了下面这些渠道&#xff0c;不少也是免费的&#xff0c;相信对你有帮助哦&#xff01; …

25考研咨询周开启,西安电子科技大学是否改考408??

学长这几天帮大家问了西安电子科技大学是否会从833、834、953改考为408&#xff1f; 西电老师回复&#xff1a;根据上级文件要求&#xff0c;招生简章以及专业目录会在网上报名开始前公布&#xff0c;专业课不会又大变动&#xff01; 因为大家安心复习即可&#xff0c;保证今…

Python 基于 flask 的前程无忧招聘可视化系统,Python大数据招聘爬虫可视化分析

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

谷歌网站收录查询,帮助您快速准确地查询网站在谷歌的收录情况的3个方法

谷歌网站收录查询&#xff0c;帮助您快速准确地查询网站在谷歌的收录情况的3个方法。 一、使用GoogleSearchConsole&#xff08;谷歌搜索控制台&#xff09; 1.注册并验证网站 -首先&#xff0c;确保您的网站已注册并验证在GoogleSearchConsole中。这是一个免费的工具&…

2-109 基于matlab-GUI的BP神经网络

基于matlab-GUI的BP神经网络&#xff0c;10种不同分布的数据样本&#xff0c;9种不同的激活函数&#xff0c;可更改升级网络结构参数&#xff0c;对比各种方法参数下的训练测试效果&#xff0c;实时显示预测过程。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&…

C++ 游戏开发

C游戏开发 C 是一种高效、灵活且功能强大的编程语言&#xff0c;因其性能和控制能力而在游戏开发中被广泛应用。许多著名的游戏引擎&#xff0c;如 Unreal Engine、CryEngine 和 Godot 等&#xff0c;都依赖于 C 进行核心开发。本文将详细介绍 C 在游戏开发中的应用&#xff0…

ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到

ireport生成pdf里文字不显示。本文以宋体中文字不显示为例。 问题&#xff1a;由浅入深一步一步分析 问题1、预览正常&#xff0c;但生成pdf中文不显示 报告模板编辑后&#xff0c;预览正常&#xff0c;但生成pdf中文不显示。以下是试验过程&#xff1a; 先编辑好一个报告单模…

苹果荔枝柠檬梨柿子数据集 水果数据集 树上1500张 带标注 voc yolo 5类

苹果荔枝柠檬梨柿子数据集 水果数据集 树上1500张 带标注 voc yolo 5类 苹果荔枝柠檬梨柿子数据集 名称 苹果荔枝柠檬梨柿子数据集 (Apple, Litchi, Lemon, Pear, Persimmon Dataset) 规模 图像数量&#xff1a;1498张图像。类别&#xff1a;5种水果类别。标注个数&#xff…

成都网安周暨CCS2024 | 大模型安全与产业应用创新研讨活动成功举办

9月11日-12日&#xff0c;作为2024年国家网络安全宣传周成都系列活动的重磅活动之一&#xff0c;CCS 2024成都网络安全系列活动在成都举行。“大模型安全与产业应用创新研讨活动”同期举办&#xff0c;本场活动由百度安全、成都无糖信息联合承办&#xff0c;特邀云安全联盟CSA大…

数据权限的设计与实现系列11——前端筛选器组件Everright-filter集成功能完善2

‍ 筛选条件数据类型完善 文本类 筛选器组件给了一个文本类操作的范例&#xff0c;如下&#xff1a; Text: [{label: 等于,en_label: Equal,style: noop},{label: 等于其中之一,en_label: Equal to one of,value: one_of,style: tags},{label: 不等于,en_label: Not equal,v…

Gin框架简易搭建(3)--Grom与数据库

写在前面 项目地址 个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍 但是它在环境搭建阶段对于初学者而言不是很友好&#xff0c;尤其是使用mysql指令稍有不同&#xff0c;以及更新的方法和依赖问题都是很让人头疼的&#xff0c;而且这些报错并非逻辑上的&#xf…

【Redis】如何在 Ubuntu 上安装 Redis 5

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 本期内容主要介绍如何在 Ubuntu 上安装 Redis5 一些碎碎念&#xff1a; 本来这期内容介绍如何在 Centos 安装 Redis …

TypeScript 设计模式之【状态模式】

文章目录 状态模式&#xff1a;优雅切换的交通信号灯状态模式的奥秘状态模式有什么利与弊?如何使用状态模式来优化你的系统代码实现案例状态模式的主要优点状态模式的主要缺点状态模式的适用场景总结 状态模式&#xff1a;优雅切换的交通信号灯 当你站在繁忙的十字路口&#…

Android AMS介绍

注&#xff1a;本文为作者学习笔记&#xff0c;如有误&#xff0c;请各位大佬指点 系统进程运行环境的初始化 Context是一个抽象类&#xff0c;它可以访问application环境的全局信息和各种资源信息和类 context功能&#xff1a; 对Activity、Service生命周期的管理通过Intent发…