Azkaban入门,部署安装和案例

一:Azkaban简介

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
  1、Web用户界面
  2、方便上传工作流
  3、方便设置任务之间的关系
  4、调度工作流
  5、认证/授权(权限的工作)
  6、能够杀死并重新启动工作流
  7、模块化和可插拔的插件机制
  8、项目工作区
  9、工作流和任务的日志记录和审计

二:Azkaban的部署安装

2.1:安装azkaban

1.在hadoop102上的/opt/module下创建azkaban目录
[root@hadoop102 module]# mkdir azkaban

2.将装有azkaban的tar包的解压到指定的目录,这里我的所有关于azkaban的tar包都放在了/opt/software/Azkaban_tars这个目录下了。然后依次执行下面的内容。

[root@hadoop102 Azkaban_tars]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz -C /opt/module/azkaban/

[root@hadoop102 Azkaban_tars]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz -C /opt/module/azkaban/

[root@hadoop102 Azkaban_tars]# tar -zxvf azkaban-web-server-2.5.0.tar.gz -C /opt/module/azkaban/

[root@hadoop102 azkaban]# ll
total 4
drwxr-xr-x. 2 root root 4096 Aug  6 09:37 azkaban-2.5.0
drwxr-xr-x. 7 root root   92 Aug  6 09:37 azkaban-executor-2.5.0
drwxr-xr-x. 8 root root  103 Aug  6 09:38 azkaban-web-2.5.0

3.进入解压后的/opt/module/azkaban目录对文件改名

[root@hadoop102 azkaban]# mv azkaban-web-2.5.0/ server
[root@hadoop102 azkaban]# mv azkaban-executor-2.5.0/ executor

4.进入mysql mysql -uroot -p123456
然后执行如下操作目的是执行azkaban内置的脚本然后去创建mysql的表

mysql> create database azkaban;
mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql

最后在azkaban下show tables有下面的表说明导入成功了,这时候就可以quit退出mysql了。

mysql> show tables;
±-----------------------+
| Tables_in_azkaban |
±-----------------------+
| active_executing_flows |
| active_sla |
| execution_flows |
| execution_jobs |
| execution_logs |
| project_events |
| project_files |
| project_flows |
| project_permissions |
| project_properties |
| project_versions |
| projects |
| properties |
| schedules |
| triggers |
±-----------------------+
15 rows in set (0.00 sec)

2.2:生成密钥对和证书

1.密钥对和证书的相关内容:
Keytool是java数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。
-keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore文件中)
-genkey(或者-genkeypair) 生成密钥对
-alias 为生成的密钥对指定别名,如果没有默认是mykey
-keyalg 指定密钥的算法 RSA/DSA 默认是DSA

2.在hadoop102的/opt/module/azkaban/server目录下执行 keytool -keystore keystore -alias jetty -genkey -keyalg RSA

详情见图片的内容

在这里插入图片描述

这是再ls下可以看到当前目录下多了一个keystore文件,这也即是刚才生成的。

在这里插入图片描述

2.3:时间同步配置

时间同步配置的原因:azkaban在进行时间调度的时候对时间的要求是要很准确的,随意必须要保证集群的时间是同步的。

1.先配置好服务器节点上的时区,如果在/usr/share/zoneinfo/这个目录下不存在时区配置文件Asia/Shanghai,就要用 tzselect 生成,没有的话请先移步https://www.cnblogs.com/liuxinrong/articles/12739198.html

2.配置完第一步后拷贝该时区文件,覆盖系统本地时区配置,在hadoop集群中都执行一遍如下命令

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.4:Web server服务器和执行服务器配置

1.进入 azkaban web 服务器安装目录 conf 目录然后编辑azkaban.properties文件

进去以后可以先set nu设置一下行号。
1)第6,7行的内容分别修改为

#默认web server存放web文件的目录
web.resource.dir=/opt/module/azkaban/server/web/
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai

2)第11行内容改为

#用户权限管理默认类(绝对路径)
user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml

3).17到22行是关于mysql的,注意一下mysql的用户名和密码以及数据库连接IP需要根据你自己的实际情况来配置。

#数据库连接IP
mysql.host=hadoop102
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=root
#数据库密码
mysql.password=123456
#最大连接数
mysql.numconnections=100

4)32到36行(配置完就可以保存退出了)

#SSL文件名(绝对路径)
jetty.keystore=/opt/module/azkaban/server/keystore
#SSL文件密码
jetty.password=123456
#Jetty主密码与keystore文件相同
jetty.keypassword=123456
#SSL文件名(绝对路径)
jetty.truststore=/opt/module/azkaban/server/keystore
#SSL文件密码
jetty.trustpassword=123456

3.进入/opt/module/azkaban/executor/conf目录编辑azkaban.properties文件
1)第2行时区修改为

default.timezone.id=Asia/Shanghai

2)第8行修改为

executor.global.properties=/opt/module/azkaban/executor/conf/global.properties

3)第13到16行为修改mysql的内容(配置完就可以保存退出了)

mysql.host=hadoop102
mysql.database=azkaban
mysql.user=root
mysql.password=123456

2.web服务器用户配置
在azkaban web服务器安装目录 conf目录(/opt/module/azkaban/server/conf),按照如下配置修改azkaban-users.xml 文件,增加管理员用户。

<user username="admin" password="admin" roles="admin,metrics"/>添加到里面后保存退出。

在这里插入图片描述

2.5:启动executor服务器和web服务器

1.在executor服务器目录下执行启动命令
[root@hadoop102 executor]# bin/azkaban-executor-start.sh

2.在azkaban web服务器目录下执行启动命令
[root@hadoop102 server]# bin/azkaban-web-start.sh

注意:
1)这里要强调一下关闭的命令不在是对应的stop,而是shutdown
2)azkaban-web-shutdown.sh 和 azkaban-executor-shutdown.sh
3)开启的时候要先启动executor服务器,关闭的时候要先关闭web服务器

注意这两个都是一个阻塞进程,我们可以在启动一个窗口然后jps查看一下进程,可以看到executor和web都已经启动好了
[root@hadoop102 server]# jps
7504 Jps
7478 AzkabanWebServer
7432 AzkabanExecutorServer

3.查看azkaban的web端
在谷歌浏览器中输入 https://hadoop102:8443/ 回车进入页面,第一次的话会说不是私密连接,直接忽略就可以了,然后点下下面的高级,点下前往就可以了。

在这里插入图片描述

在这里插入图片描述

输入账号(admin)和密码(123456)后进入web端

在这里插入图片描述

在这里插入图片描述

4.首页的页面介绍:


    projects:会罗列出来所有的工作流和任务
    scheduling:罗列出来所有的定时调度任务
    executing:显示正在执行的任务
    history:显示已经执行完毕的任务

三:Azkaban的应用案例

3.1:单一的job案例

在讲案例之前我们需要了解一下Azkaba内置的任务类型支持command、java.

1.在windows上新建一个文件我们不妨叫hello.job(注意一定是xxx.job文件,否则无法识别)
在里面输入如下内容
type=command
command=echo ‘hello world’

2.将文件打成zip包(注意一定是zip包,xxx.zip即可,因为azkaban暂不支持其他版本的压缩包)

3.上传并运行
1)通过azkaban的web管理平台创建project并上传job的zip包,首先创建一个project,project名字随便取一个,但是要注意project的名字是不能相同的,下面描述信息可以选填。

在这里插入图片描述

在这里插入图片描述

2)Create Project后会跳转到uploadf页面,点击右上角的upload上传刚才的zip压缩后文件,然后就可以看到文件已经成功被上传。

在这里插入图片描述

在这里插入图片描述

3)点击Execute flow执行任务流,由于我们只是一个简单的打印,所以设置的是立即执行。

在这里插入图片描述

在这里插入图片描述

点击conuinue

在这里插入图片描述

4)查看任务的执行情况

在这里插入图片描述

在这里插入图片描述

我们去details一下看看细节

在这里插入图片描述

在这里插入图片描述

3.2:调度shell脚本案例

1.在hadoop10的/opt/module/azkaban下新建一个azkaban_job目录,然后在这个目录下创建脚本文件date.sh填入一下内容后保存退出

#!/bin/bash
date >>  /opt/module/azkaban/azkaban_job/date.txt

2.在windows里面创建一个test2.job,填入一下内容,因为我们没有对脚本赋予执行权限,所以在这个文件里面用下sh来执行脚本。

type=command
command=sh /opt/module/azkaban/azkaban_job/date.sh

3.将test2.job打成zip压缩包上传至azkaban的web端,这一次我们选择定时执行看一下效果,每分钟执行一次。

在这里插入图片描述

在这里插入图片描述

在Scheduling里面可以查看定时的任务

在这里插入图片描述

在history里面可以看到任务已经成功的定时执行了3次

在这里插入图片描述

我们去当时脚本打印时间的目录发现azkaban已经成功的执行了我们的脚本

[root@hadoop102 azkaban_job]# pwd
/opt/module/azkaban/azkaban_job
[root@hadoop102 azkaban_job]# ls
date.sh  date.txt
[root@hadoop102 azkaban_job]# cat date.txt
Thu Aug  6 18:16:45 CST 2020
Thu Aug  6 18:17:45 CST 2020
Thu Aug  6 18:18:44 CST 2020
Thu Aug  6 18:19:45 CST 2020
[root@hadoop102 azkaban_job]#

最后就是一个关于关闭定时的任务问题,在Scheduling里面的 Remove schdule可以删除定时的任务。这样的话我们的定时任务就不会再执行了。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值