Azkaban工作流调度
一、工作流概述
1. 背景
一个完整的数据分析系统通常都是由大量任务单元组成,例如shell脚本程序、java程序、mapreduce程序和hive脚本等。各任务单元之间存在时间先后及依赖关系,为了将这复杂的执行计划组织起来,需要一个工作流调度系统来调度执行。
2. 工作流调度工具
1) Azkaban
Azkaban是由Linkedin公司开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
2) Oozie
Oozie是Apache旗下的,用于管理Hadoop任务的工作流/协调系统,可与Hadoop生态圈紧密结合,提供诸多配置和功能。
二、Azkaban概述
1. 特点
- 兼容所有版本的 Hadoop 。
- 基于 Web 的易用 UI
- 简单的 Web 和 HTTP 工作流上传。
- 项目工作空间
- 工作流调度。
- 模块化和插件化。
- 支持认证和授权
- 可跟踪用户行为。
- 失败和成功时的邮件提醒。
- SLA 警告和自动终止。
- 失败作业的重试。
2. Azkaban组成结构
Azkaban工作流管理器由三个核心部分组成,分别是Relational Database(关系型数据库MySQL)、AzkabanWebServer(Web服务器)、AzkabanExecutorServer(执行服务器)。三者关系具体如图所示。
3. Azkaban部署模式
1) solo-server mode(独立服务器模式)
在独立服务器模式下,使用的数据库是内嵌的H2,并且web server和executor server都在同一进程中运行,通常适用于小规模测试阶段。
2) two server mode(双服务器模式)
双服务器模式适用于比较复杂的生产环境,它的数据库会由具有主从设置的MySQL实例提供支持。其中,Web服务器和执行服务器应在不同的进程中运行,以便升级和维护过程中不影响用户。
3) distributed multiple-executor mode(分布式多执行器模式)
分布式多执行器模式适用于特别复杂的生产环境,理想情况下,Web服务器和执行服务器应在不同的主机中运行,以便升级和维护不影响用户。这种分布式多主机设置的模式为Azkaban带来了强大且可扩展的性能。
三、Azkaban的部署
1. 下载
两种下载方法
1) 第一种:通用的github项目的下载方式
2) 第二种下载方法,可以有选择性的下载自己需要的版本
2. 上传
3. 安装unzip
需要用unzip进行解压,先安装unzip
4. 解压
5. Azkaban目录介绍
6. 编译
小知识:jar包依赖管理有两种方式:
Maven:pom.xml指定某个jar的坐标
Gradle:build.gradle指定某个jar的坐标,更加简洁
7. 出现错误,提示需要git工具,安装git
代码和版本管理工具:代码整合(小组合作)、版本管理(版本回退)、分支管理(master、dev)
Svn:集中式
Git:分布式
8. 重新编译
四、Mysql安装
下载并安装MySQL官方的 Yum Repository
使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
安装MySQL服务器
这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb
五、mysql数据库设置
首先启动MySQL
查看MySQL运行状态,运行状态如图:
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
如下命令进入数据库:
输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
开启mysql的远程访问
然后再输入下面两行命令
进入mysql数据库
查看user表
将root的host改为%
更改mysql的语言
首先重新登录mysql,然后输入status:
可以看到,绿色箭头处不是utf-8
因此我们先退出mysql,然后再到、etc目录下的my.cnf文件下修改一下文件内容
保存更改后的my.cnf文件后,重启下mysql,然后输入status再次查看,你就会发现变化啦
最后,到Windows下用远程连接工具启动mysql啦!!
链接成功
六、Azkaban数据库初始化
1. 链接mysql
命令行
mysql -h localhost -u root -p
可视化工具
2.创建azkaban数据库
命令行创建的命令为:create database azkaban;
3.找到相关的压缩文件
4.解压
5.进入解压后的文件夹查看
找到需要的sql文件
6.导入数据到azkaban数据库中
可视化方式,先把那个sql文件下载到本地
命令行:
use azkaban;
source /root/create-all-sql-0.1.0-SNAPSHOT.sql;
7.查看azkaban的数据库表
七、Azkaabn web 服务器安装配置
1.ssl创建
azkaban使用rsa公钥加密算法
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
2.进入查看azkaban web服务器文件
3.解压
解压到/export/servers
tar xzvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/
4.查看目录
5.配置web服务
Azkaban-properties的配置
Azkaban-users.xml(可选的配置)
八、Azkaban executor 服务器安装配置
1.查看相关文件
2.解压
解压到/export/servers
tar xzvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/
3.配置exec服务
九、启动测试
1. 启动exec服务
2.查看是否启动成功
Jps
3.查看日志文件
查看命令
说明azkaban exector服务启动成功,占用38891端口
4.启动web服务
启动命令:
5.Jps查看进程
发现并没有启动azkaban服务
6. 查看日志
7.激活exector服务
curl -G “localhost:35338/executor?action=activate” && echo
执行时需要在azkaban exector服务的根目录下执行
各参数意义:
重新启动进程发现启动成功
8.访问webUI
9.登录webUI
用户名和密码都是azkaban
十、Azkaban的任务调度
1.任务调度测试
1)创建两个job文件
创建first.job
创建second.job
2)打包
把刚才创建的两个任务文件打成zip压缩包
安装zip
3)把打包好的zip文件下载到本地
4)在webUI中创建一个项目
5)上传压缩包
6)查看工作流详情
7)任务立即执行或者调度执行
点击绿色的按钮后出现如下界面
点击execute立即执行
查看执行结果发现执行成功
点击log查看日志文件
2.HDFS任务调度
1)创建job描述文件
2)将job文件打zip包
3)在webUI上创建项目并上传压缩包
4)启动hadoop集群
5)运行任务并查看
这里注意如果虚拟机内存少于3G会运行不成功
- 调大内存
- 修改配置文件
如果怎样都运行失败的话,还有一个点就是, exec服务和web服务都必须在对应的根目录下启动, 这个点非常重要
查看hadoop下目录
十一、作业1: MapReduce任务调度
1.启动hdfs以及yarn
2.创建job文件
由于之前有了output文件,这里直接输出个新文件夹
3.开启exec服务
4.开启web服务
5.在webUI界面上创建项目
6.寻找hadoop自带的example的jar包
7.下载该jar包
8.将job文件和jar包打成zip包
9.将zip包上传到webUI界面
10.启动该项目
运行成功
11.在hadoop web端界面查看结果