Azkaban使用

Azkaban是一个由LinkedIn创建的批处理工作流作业调度程序,用于运行Hadoop作业,提供直观的Web UI和丰富的功能,如定时调度、重试失败任务、SLA警报等。与Oozie相比,Azkaban更轻量级,具有严格权限控制。本文介绍了Azkaban的安装部署、项目创建、依赖执行Job和运行Jar文件的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Azkaban简介

官网:https://azkaban.github.io/
Azkaban是在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决顺序问题,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。
在这里插入图片描述

  • 兼容任何版本的Hadoop
  • 易于使用的Web UI
  • 简单的Web和http工作流上传
  • 项目工作区
  • 调度工作流程
  • 模块化和可插入
  • 身份验证和授权
  • 跟踪用户操作
  • 有关失败和成功的电子邮件提醒
  • SLA警报和自动查杀
  • 重试失败的工作
    Azkaban的设计主要考虑了可用性。它已在LinkedIn运行了几年,并推动了许多Hadoop和数据仓库流程。

Azkaban VS Oozie

与Oozie相比,azkaba是一个轻量级调度工具。企业应用的功能不是小众化的功能都可以使用azkaba。

  1. 功能
    两个任务流调度器可以调度使用mr,java,脚本工作流任务,都可以进行定时调度。
  2. 使用
    azkaban是直接传参,而Oozie也是直接传参并支持EL表达式。
  3. 定时
    azkaban定时执行任务基于时间,Oozie任务基于时间和数据。
  4. 资源
    az有严格的权限控制,Oozie无严格的权限控制。

Azkaba安装部署

1)下载安装包,需要使用gradle打包源文件,按照官方文档提示操作。
https://github.com/azkaban/azkaban

网盘下载 提取码:c0wq
在这里插入图片描述
2)解压下载的文件
3)导入azkaban的脚本到mysql。

create database azkaban;
source create-all-sql-2.5.0.sql

4)创建SSL(安全连接),网盘的安装包需要一个证书,按提示输入密码。

keytool -keystore keystore -alias jetty -genkey -keyalg RSA
需要把生成的keystore目录拷贝到azkaban-web目录下。

5)时间同步设置

如果在/usr/share/zoneinfo/Asia目录下没有Shanghai,则创建时区文件:
tzselect=>5=>9=>1
修改软连接:
li -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
下面命令可设置日期
date -s '2019-01-28 23:19:00'

6)修改配置文件azkaban-web/conf/azkaban.properties

#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
# 注意大小写
default.timezone.id=Asia/Shanghai

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

#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
jetty.maxThreads=25
# https访问的端口
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
# 生成ssl时输入的密码
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456

# Azkaban Executor settings,和azkaban.properties的executor.port参数对应
executor.port=12321

# mail settings
mail.sender=
mail.host=
job.failure.email=
job.success.email=

lockdown.create.projects=false

cache.directory=cache

7)修改配置文件azkaban-executor/conf/azkaban.properties:

#Azkaban
default.timezone.id=Asia/Shanghai

# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes

#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=123
mysql.numconnections=100

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

8)修改azkaban-users.xml,添加一个服务器的用户:

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

9)分别启动azkaban-web和azkaban-executor

bin/azkaban-web-start.sh
bin/azkabban-executor-start.sh

10)访问:

https://hd-even-01:8443
用户名和密码为在azkaban-users.xml中设置的。

在这里插入图片描述

Azkaban使用

项目创建

  1. 创建项目,描述信息不能是中文:
    在这里插入图片描述
  2. 创建even_common.job文件,编写任务内容:
type=command
command=echo 'even learning azkaban'
  1. 把文件打包成zip压缩包,必须是zip格式:
    在这里插入图片描述
  2. 上传压缩包
    在这里插入图片描述
  3. 执行流程
    在这里插入图片描述
  4. 页面显示绿色代表执行成功
    在这里插入图片描述
  5. 结果:

依赖执行Job

  1. 创建三个Job文件,一个是startHDFS.job,一个是hdfs.job,一个是sleep.job
    startHDFS.job:
type=command
command=/home/even/hd/hadoop-2.8.4/sbin/start-dfs.sh

sleep.job:

type=command
dependencies=startHDFS
# hdfs启动后有一段时间的安全模式,此时不可对hdfs进行操作,因此,需要定义一个睡眠时间
command=sleep 60

hdfs.job:

type=command
# 指定依赖于哪个任务
dependencies=sleep
command=/home/even/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban
  1. 把三个文件同时打包成zip压缩包并上传到azkaban:
    在这里插入图片描述

  2. 执行流程
    在这里插入图片描述
    hdfs生成azkaban文件成功
    在这里插入图片描述

运行Jar文件

在/home/even/hd/hadoop-2.8.4/share/hadoop/mapreduce目录下有一个hadoop-mapreduce-examples-2.8.4.jar,此Jar文件是一个WordCount程序。

  1. 创建wc.job文件:
type=command
command=/home/even/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /user/hive/warehouse/hive_db.db/usertable /azwc/out

其中usertable是用hive生成的一个表,内容是在这里插入图片描述
2. 把wc.job和hadoop-mapreduce-examples-2.8.4.jar打包成zip压缩包。
在这里插入图片描述
3. 上传任务并执行,执行此Jar文件必须保证hdfs和yarn集群已启动,否则会出错无法连接的错误:
在这里插入图片描述
4. 结果,可通过Job List的Details查看日志:

在这里插入图片描述
azkaban日志
在这里插入图片描述

hdfs生成输出文件:
在这里插入图片描述

总结

Azkaban通过工作流的方式去完成一些有依赖关系的任务,从而达到自动化运行作业的目标。用户可以通过提供的Web UI创建任务。更多内容可查看官方文档。
上面例子中分别展示了,单Job运行,依赖Job运行,带文件的Job运行的例子,通过这几个例子,可以自由搭配实现自己的Job。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值