Azkaban工作流调度

一、工作流概述

1. 背景

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

2. 工作流调度工具

1) Azkaban

Azkaban是由Linkedin公司开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。

2) Oozie

Oozie是Apache旗下的,用于管理Hadoop任务的工作流/协调系统,可与Hadoop生态圈紧密结合,提供诸多配置和功能。

二、Azkaban概述

1. 特点

  1. 兼容所有版本的 Hadoop 。
  2. 基于 Web 的易用 UI
  3. 简单的 Web 和 HTTP 工作流上传。
  4. 项目工作空间
  5. 工作流调度。
  6. 模块化和插件化。
  7. 支持认证和授权
  8. 可跟踪用户行为。
  9. 失败和成功时的邮件提醒。
  10. SLA 警告和自动终止。
  11. 失败作业的重试。

2. Azkaban组成结构

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

hadoop浏览工具 hadoop工作流_hive

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. 下载

hadoop浏览工具 hadoop工作流_大数据_02


两种下载方法

1) 第一种:通用的github项目的下载方式

hadoop浏览工具 hadoop工作流_hive_03


hadoop浏览工具 hadoop工作流_hadoop_04

2) 第二种下载方法,可以有选择性的下载自己需要的版本

hadoop浏览工具 hadoop工作流_hive_05


hadoop浏览工具 hadoop工作流_hive_06

2. 上传

hadoop浏览工具 hadoop工作流_hadoop浏览工具_07

3. 安装unzip

需要用unzip进行解压,先安装unzip

hadoop浏览工具 hadoop工作流_大数据_08

4. 解压

hadoop浏览工具 hadoop工作流_hive_09


hadoop浏览工具 hadoop工作流_大数据_10

5. Azkaban目录介绍

hadoop浏览工具 hadoop工作流_hadoop浏览工具_11

6. 编译

小知识:jar包依赖管理有两种方式:
Maven:pom.xml指定某个jar的坐标
Gradle:build.gradle指定某个jar的坐标,更加简洁

hadoop浏览工具 hadoop工作流_big data_12

hadoop浏览工具 hadoop工作流_hive_13

7. 出现错误,提示需要git工具,安装git

代码和版本管理工具:代码整合(小组合作)、版本管理(版本回退)、分支管理(master、dev)
Svn:集中式
Git:分布式

hadoop浏览工具 hadoop工作流_大数据_14

8. 重新编译

hadoop浏览工具 hadoop工作流_hive_15


hadoop浏览工具 hadoop工作流_big data_16

四、Mysql安装

下载并安装MySQL官方的 Yum Repository

hadoop浏览工具 hadoop工作流_hadoop浏览工具_17


使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

hadoop浏览工具 hadoop工作流_hadoop_18


安装MySQL服务器

hadoop浏览工具 hadoop工作流_hive_19


hadoop浏览工具 hadoop工作流_hadoop浏览工具_20


这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb

五、mysql数据库设置

首先启动MySQL

hadoop浏览工具 hadoop工作流_大数据_21


查看MySQL运行状态,运行状态如图:

hadoop浏览工具 hadoop工作流_hive_22


此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

hadoop浏览工具 hadoop工作流_hadoop浏览工具_23


如下命令进入数据库:

hadoop浏览工具 hadoop工作流_hadoop浏览工具_24


输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

hadoop浏览工具 hadoop工作流_hadoop浏览工具_25


开启mysql的远程访问

hadoop浏览工具 hadoop工作流_hive_26

然后再输入下面两行命令

hadoop浏览工具 hadoop工作流_hadoop_27


进入mysql数据库

hadoop浏览工具 hadoop工作流_大数据_28


查看user表

hadoop浏览工具 hadoop工作流_大数据_29


将root的host改为%

hadoop浏览工具 hadoop工作流_hive_30


更改mysql的语言

首先重新登录mysql,然后输入status:

hadoop浏览工具 hadoop工作流_hadoop_31


可以看到,绿色箭头处不是utf-8

因此我们先退出mysql,然后再到、etc目录下的my.cnf文件下修改一下文件内容

hadoop浏览工具 hadoop工作流_big data_32


hadoop浏览工具 hadoop工作流_hive_33

hadoop浏览工具 hadoop工作流_hadoop浏览工具_34


保存更改后的my.cnf文件后,重启下mysql,然后输入status再次查看,你就会发现变化啦

hadoop浏览工具 hadoop工作流_big data_35


最后,到Windows下用远程连接工具启动mysql啦!!

hadoop浏览工具 hadoop工作流_big data_36


链接成功

六、Azkaban数据库初始化

1. 链接mysql

命令行

mysql -h localhost -u root -p

可视化工具

hadoop浏览工具 hadoop工作流_big data_37

2.创建azkaban数据库

命令行创建的命令为:create database azkaban;

hadoop浏览工具 hadoop工作流_大数据_38


hadoop浏览工具 hadoop工作流_大数据_39

3.找到相关的压缩文件

hadoop浏览工具 hadoop工作流_big data_40

4.解压

hadoop浏览工具 hadoop工作流_hadoop浏览工具_41

5.进入解压后的文件夹查看

找到需要的sql文件

hadoop浏览工具 hadoop工作流_大数据_42

6.导入数据到azkaban数据库中

可视化方式,先把那个sql文件下载到本地

hadoop浏览工具 hadoop工作流_hadoop浏览工具_43


命令行:

hadoop浏览工具 hadoop工作流_大数据_44


use azkaban;

source /root/create-all-sql-0.1.0-SNAPSHOT.sql;

hadoop浏览工具 hadoop工作流_大数据_45

7.查看azkaban的数据库表

hadoop浏览工具 hadoop工作流_hadoop_46

七、Azkaabn web 服务器安装配置

1.ssl创建

hadoop浏览工具 hadoop工作流_hive_47


azkaban使用rsa公钥加密算法

hadoop浏览工具 hadoop工作流_big data_48


keytool -keystore keystore -alias jetty -genkey -keyalg RSA

hadoop浏览工具 hadoop工作流_hadoop_49

2.进入查看azkaban web服务器文件

hadoop浏览工具 hadoop工作流_hive_50

3.解压

解压到/export/servers

tar xzvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/

hadoop浏览工具 hadoop工作流_大数据_51

4.查看目录

hadoop浏览工具 hadoop工作流_hadoop_52

5.配置web服务

hadoop浏览工具 hadoop工作流_大数据_53


Azkaban-properties的配置

hadoop浏览工具 hadoop工作流_hadoop浏览工具_54

hadoop浏览工具 hadoop工作流_大数据_55


Azkaban-users.xml(可选的配置)

hadoop浏览工具 hadoop工作流_hadoop浏览工具_56

八、Azkaban executor 服务器安装配置

1.查看相关文件

hadoop浏览工具 hadoop工作流_hive_57


hadoop浏览工具 hadoop工作流_hadoop_58

2.解压

解压到/export/servers

tar xzvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/

hadoop浏览工具 hadoop工作流_hive_59


hadoop浏览工具 hadoop工作流_大数据_60

3.配置exec服务

hadoop浏览工具 hadoop工作流_hive_61


hadoop浏览工具 hadoop工作流_hive_62


hadoop浏览工具 hadoop工作流_big data_63


hadoop浏览工具 hadoop工作流_big data_64

九、启动测试

1. 启动exec服务

hadoop浏览工具 hadoop工作流_hive_65

2.查看是否启动成功

Jps

hadoop浏览工具 hadoop工作流_big data_66

3.查看日志文件

hadoop浏览工具 hadoop工作流_hadoop_67


查看命令

hadoop浏览工具 hadoop工作流_hadoop_68


hadoop浏览工具 hadoop工作流_hive_69


说明azkaban exector服务启动成功,占用38891端口

4.启动web服务

启动命令:

hadoop浏览工具 hadoop工作流_hadoop_70

5.Jps查看进程

hadoop浏览工具 hadoop工作流_hadoop浏览工具_71


发现并没有启动azkaban服务

6. 查看日志

hadoop浏览工具 hadoop工作流_hive_72


hadoop浏览工具 hadoop工作流_hadoop浏览工具_73

7.激活exector服务

curl -G “localhost:35338/executor?action=activate” && echo
执行时需要在azkaban exector服务的根目录下执行

hadoop浏览工具 hadoop工作流_hadoop_74


各参数意义:

hadoop浏览工具 hadoop工作流_hadoop浏览工具_75

重新启动进程发现启动成功

8.访问webUI

hadoop浏览工具 hadoop工作流_hive_76

9.登录webUI

用户名和密码都是azkaban

hadoop浏览工具 hadoop工作流_hive_77

十、Azkaban的任务调度

1.任务调度测试

1)创建两个job文件

创建first.job

hadoop浏览工具 hadoop工作流_hadoop_78


创建second.job

hadoop浏览工具 hadoop工作流_hive_79

2)打包

把刚才创建的两个任务文件打成zip压缩包
安装zip

hadoop浏览工具 hadoop工作流_hive_80


hadoop浏览工具 hadoop工作流_hive_81

3)把打包好的zip文件下载到本地

hadoop浏览工具 hadoop工作流_大数据_82


hadoop浏览工具 hadoop工作流_hadoop_83

4)在webUI中创建一个项目

hadoop浏览工具 hadoop工作流_big data_84


hadoop浏览工具 hadoop工作流_hive_85

5)上传压缩包

hadoop浏览工具 hadoop工作流_big data_86

6)查看工作流详情

hadoop浏览工具 hadoop工作流_hadoop_87

hadoop浏览工具 hadoop工作流_hadoop_88

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

hadoop浏览工具 hadoop工作流_big data_89

点击绿色的按钮后出现如下界面

hadoop浏览工具 hadoop工作流_hadoop_90

点击execute立即执行

hadoop浏览工具 hadoop工作流_hive_91


查看执行结果发现执行成功

hadoop浏览工具 hadoop工作流_hadoop_92


点击log查看日志文件

hadoop浏览工具 hadoop工作流_big data_93

2.HDFS任务调度

1)创建job描述文件

hadoop浏览工具 hadoop工作流_hive_94

2)将job文件打zip包

hadoop浏览工具 hadoop工作流_hadoop_95

3)在webUI上创建项目并上传压缩包

hadoop浏览工具 hadoop工作流_hive_96


hadoop浏览工具 hadoop工作流_hive_97

4)启动hadoop集群

hadoop浏览工具 hadoop工作流_hive_98

5)运行任务并查看

hadoop浏览工具 hadoop工作流_hadoop浏览工具_99


这里注意如果虚拟机内存少于3G会运行不成功

  1. 调大内存
  2. 修改配置文件
    如果怎样都运行失败的话,还有一个点就是, exec服务和web服务都必须在对应的根目录下启动, 这个点非常重要

    查看hadoop下目录

hadoop浏览工具 hadoop工作流_hadoop浏览工具_100

十一、作业1: MapReduce任务调度

1.启动hdfs以及yarn

hadoop浏览工具 hadoop工作流_大数据_101

2.创建job文件

由于之前有了output文件,这里直接输出个新文件夹

hadoop浏览工具 hadoop工作流_hadoop_102

3.开启exec服务

hadoop浏览工具 hadoop工作流_big data_103

4.开启web服务

hadoop浏览工具 hadoop工作流_hadoop浏览工具_104

5.在webUI界面上创建项目

hadoop浏览工具 hadoop工作流_big data_105

6.寻找hadoop自带的example的jar包

hadoop浏览工具 hadoop工作流_hadoop_106

7.下载该jar包

hadoop浏览工具 hadoop工作流_hadoop浏览工具_107

8.将job文件和jar包打成zip包

hadoop浏览工具 hadoop工作流_大数据_108

9.将zip包上传到webUI界面

hadoop浏览工具 hadoop工作流_hive_109


hadoop浏览工具 hadoop工作流_大数据_110

10.启动该项目

hadoop浏览工具 hadoop工作流_hive_111


运行成功

hadoop浏览工具 hadoop工作流_大数据_112

11.在hadoop web端界面查看结果

hadoop浏览工具 hadoop工作流_hadoop_113


hadoop浏览工具 hadoop工作流_hadoop浏览工具_114