Hadoop高手之路9-Azkaban工作流管理器

文章目录


img

Hadoop高手之路9-Azkaban工作流管理器

一、工作流概述

1. 工作流简介

一个完整的数据分析系统通常都由大量的工作任务单元组成,例如脚本shell程序、数据采集、数据处理MR、数据存储、java程序等,各任务单元之间存在时间先后及依赖关系,为了将这些复杂的执行计划组织起来,需要一个工作流调度系统来调度执行。

2. 常见的工作流调度工具

1) Azkaban

英文解释:

Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows.

翻译一下:

Azkaban是一个在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决了排序问题,并提供了一个易于使用的web用户界面来维护和跟踪您的工作流程。

2) Oozie

Oozie 是一个开源的工作流和协作服务引擎,基于 Apache Hadoop 的数据处理任务。Oozie 是可扩展的、可伸缩的面向数据的服务,运行在 Hadoop 平台上。

Oozie 包括一个离线的 Hadoop 处理的工作流解决方案,以及一个查询处理 API。

image-20230105224210505

image-20230105224259994

二、Azkaban简介

1. Azkaban组成结构

Azkaban工作流管理器由三个核心部分组成,分别是Relational Database(关系型数据库MySQL)、AzkabanWebServer(Web服务器)、AzkabanExecutorServer(执行服务器)。三者关系具体如图所示。

在这里插入图片描述

2. Azkaban的部署模式

1) solo-server mode(独立服务器模式)

使用的数据库是内置的H2,而且web server和executor server都在统一进程中运行,通常用于小规模的测试阶段

2) two server mode(双服务器模式)

使用的数据库是主从设置的mysql,web server和executor server在不同的进程中,通常用于比较复杂的生产环境。

3) distributed multi-executor mode(分布式多执行器模式)

使用的数据库是主从设置的mysql,web server和executor server在不同的主机中,通常用于特别复杂的生产环境。

3.Azkaban特点

  • Compatible with any version of Hadoop :兼容所有版本的 Hadoop。
  • Easy to use web UI:基于Web的易用 UI。
  • Simple web and http workflow uploads:简单的 Web 和 HTTP 工作流上传。
  • Project workspaces:项目工作空间。
  • Scheduling of workflows:工作流调度。
  • Modular and pluginable:模块化和插件化。
  • Authentication and Authorization:支持认证和授权。
  • Tracking of user actions:可跟踪用户行为。
  • Email alerts on failure and successes:失败和成功时的邮件提醒。
  • SLA alerting and auto killing:SLA警告和自动终止。
  • Retrying of failed jobs:失败作业的重试。

三、Azkaban的资源准备

1. 下载

image-20230105224333794

两种下载方式

第一种:通用的github项目的下载方式,此处使用这种方式

GitHub - azkaban/azkaban: Azkaban workflow manager.

image-20230105224409491

第二种:有选择性的下载自己需要的版本

Releases · azkaban/azkaban (github.com)

image-20230105224431867

image-20230105224441634

2. 上传

image-20230105224454623

3. 解压

先安装unzip

image-20230105224513296

解压

image-20230105224527339

image-20230105224536167

移动到/export/servers文件夹下

image-20230105224545757

4. 目录介绍

image-20230105224600474

5. 编译

小知识:jar包依赖管理方式有两种

  • Maven:pom.xml指定某个jar包的坐标
  • Gradle:build.gradle指定某个jar的坐标,更加简洁,是android开发常用的方式

azkaban是用Gradle方式来开发的,所以编译也要用Gradle

image-20230105224624856

编译

image-20230105224639288

./gradlew build -x test

image-20230105224756719

出现错误,需要先安装git

image-20230105224812097

小知识:版本和代码管理的工具主要有git和svn

在这里插入图片描述

安装git

image-20221125230352245

image-20230105224836511

继续进行编译,但是使用gradle国外镜像编译太慢了,几个小时也没成功,下面我们修改gradle为国内镜像。

6. 修改gradle为国内镜像

image-20230105224847995

image-20230105224903402

7.重新编译

image-20230105224915528

image-20230105224928036

image-20230105224944058

用了一个半小时,终于编译成功了,可能是网速比较慢。

8. Azkaban安装包的获取

cd /export/servers/azkaban-master/azkaban-web-server/build/distributions
ll

image-20230105225018717

cd /export/servers/azkaban-master/azkaban-exec-server/build/distributions
ll

image-20230105225027374

cd /export/servers/azkaban-master/azkaban-db/build/distributions
ll

image-20230105225035430

cd /export/servers/azkaban-master/azkaban-solo-server/build/distributions
ll

image-20230105225046383

四、mysql的安装

1. 下载mysql安装yum源

查看CentOS版本

image-20230105225056230

安装wget

image-20230105225107221

wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

image-20230105225116698

2. 安装yum源,并更新升级GPG

#  安装 i代表安装,v代表可视的,h代表进度
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
 
# 不执行安装会出错
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-<当前年份>
 
# 安装mysql
yum install mysql-community-server

image-20230105225130537

3. 启动mysql服务器

systemctl start mysqld.service
systemctl status mysqld

image-20230105225140351

4. 获取临时密码

grep 'temporary password' /var/log/mysqld.log

5. 用临时密码登录mysql

mysql -uroot -p

6. 修改root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bigdata20!';

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功

7. 远程连接mysql

在这里插入图片描述

提示错误,不允许远程连接

8. 添加允许远程连接的用户

GRANT ALL PRIVILEGES ON *.* TO '20bigdata'@'%' IDENTIFIED BY 'Bigdata2022!' WITH GRANT OPTION; 

9. 重新编辑navicat连接属性

10. 重新远程连接

五、Azkaban的安装配置

1. mysql的安装配置

1) 创建azkaban的数据库及用户

2) azkaban数据库表初始化

image-20230105225435625

image-20230105225445584

use azkaban;
source /export/servers/azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql

image-20230105225455101

show tables;

image-20230105225505975

image-20230105225516468

image-20230105225523967

2. Azkaban Web服务安装配置

1) 解压安装包

先创建azkaban目录

image-20230105225532718

cd /export/servers/azkaban-master/azkaban-web-server/build/distributions/
tar zvxf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/azkaban

在这里插入图片描述

image-20230105225626085
在这里插入图片描述

2) 配置web服务

修改azkaban-properties

image-20230105225641360

image-20230105225651366

修改azkaban-users.xml,可取默认
在这里插入图片描述

3. Azkaban Executor服务安装配置

1) 解压安装包

image-20230105225712486

在这里插入图片描述

2) 配置

image-20230105225727002

image-20230105225734307

六、Azkaban的启动测试

1. 启动Azkaban Executor服务

1) 启动命令

image-20230105225746444

2) 查看启动日志

在这里插入图片描述

在这里插入图片描述

3) 关闭Azkaban Executor服务

在这里插入图片描述

2. 启动Azkaban Web服务

1) 启动命令

image-20230105225823439

2) 查看日志

image-20230105225832350

image-20230105225840167

提示没有激活的exector服务

再次查看进程

image-20230105225848069

发现并没有启动web服务

3. 激活executor服务

查看exec服务端口号

image-20230105225942628
在这里插入图片描述

执行激活命令

curl -G "hadoop001:37068/executor?action=activate"

在这里插入图片描述

说明:

  • 必须在Azkaban Executor的根目录下执行该命令
  • executor服务的端口号需要通过查看日志文件获取

4. 重新启动web服务

执行启动命令

image-20230105230025638

查看启动日志

image-20230105230035092

5. 通过web浏览器查看

在这里插入图片描述

输入用户名:azkaban,密码:azkaban,登录

image-20230105230119046

七、Azkaban依赖任务调度管理

1.创建Job文件

先创建两个有依赖关系的job文件first.job和second.job

first.job

image-20230105230131116

second.job

在这里插入图片描述

2. 把job文件打成ZIP格式的压缩包

在这里插入图片描述

image-20230105230152333

3. 把打包后的文件下载到本地windows主机

image-20230105230202628

image-20230105230210348

4. 在web ui中创建一个任务调度项目

image-20230105230222975

在这里插入图片描述

注意:创建项目时名称和描述都不能出现中文。

5. 上传任务压缩包

image-20230105230437360

6.查看工作流详情

image-20230105230447443

image-20230105230454223

7. 任务立即执行或者调度执行

image-20230105230501822

出现下面的界面:
在这里插入图片描述

点击立即执行

image-20230105230530123

8.任务执行出现错误,需要修改web服务配置

image-20230105230538577

修改commonprivate文件

在这里插入图片描述

9.重新启动exec和web服务,并重新执行调度任务

重启时需要激活exec

curl -G "hadoop001:45241/executor?action=activate"

image-20230105230557523

10.查看执行结果

image-20230105230606199

image-20230105230613448

image-20230105230621407

八、AzkabanHDFS任务调度管理

1.创建Job文件

在这里插入图片描述

2. 把job文件打成ZIP格式的压缩包并下载

image-20230105230643142

3. 在webui上创建项目并上传压缩包

在这里插入图片描述

4.启动hadoop集群

在这里插入图片描述

image-20230105230709371

image-20230105230727316

5.启动执行

image-20230105230735536

6.查看结果

image-20230105230749717

在这里插入图片描述

九、AzkabanMapReduce任务调度管理

1.创建Job文件

image-20230105230817759

# mr.job
type=command
command=hadoop jar hadoop-mapreduce-examples-3.1.4.jar wordcount hdfs://hadoop001:9000/input hdfs://hadoop001:9000/output/mrjobresult

image-20230105230847715

2.与jar包一起打包成wordcount_mr压缩包

3. 在webui上创建项目并上传压缩包

image-20230105230903292

4.打开Hadoop集群

image-20230105230911421

在这里插入图片描述

image-20230105230925378

5.启动执行

image-20230105230933136

6.查看结果

这个需要等一会才运行完。

在这里插入图片描述

image-20230105231000055

image-20230105231007397

参考文章:

CentOS7安装MySQL(完整版)

【CentOS 7.9】安装mysql 5.7笔记

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值