Azkaban基础篇

1、Azkaban插件,就是一个工作流

(1)工作流概述

定义:定义了任务的触发顺序和触发条件,每个任务可由多种组合方式完成(百度)

jBPM:开源的业务流程管理

Activiti:工作流

 

2、调度在大数据处理中的重要性

(1)Spark SQL/Hadoop用于做离线统计处理

(2)ETL过程

01数据抽取:(1)Sqoop把RDBMS中的数据抽取到Hadoop

                      (2)Flime进行日志、文本数据的采集,采集到Hadoop中

02数据处理:Hive/MapReduce/Spark/....

03统计结果入库:(1)数据就存放到HDFS(Hive/Spark SQL文件)

            然后启动一个Server:HiveServer2 / ThriftServer

            最后jdbc的方式去访问统计结果

        (2)使用Sqoop把结果导出到RDBMS中

(3)这些作业之间是存在时间先后依赖关系的

Step A ==> Step B  ==> Step C

为了更好的组织起这样的复杂执行计算的关系==>这就需要一个工作流调度系统来进行依赖关系作业的调度。

Linux crontab + shell :优点:简单、易用。缺点:维护繁琐、无依赖、资源利用率低,

     step a:01:30  30min

     step b:02:10  30min

     step c:02:50  30min

     ...

Azkaban:定时调度、依赖调度

 

3、常见的调度框架

(1)Azkaban:轻量级。官网:Azkaban

(2)Oozie:重量级。官网:Oozie - Apache Oozie Workflow Scheduler for Hadoop

(3)宙斯调度:Zeus

 

4、Azkaban概述及特性

(1)官网Azkaban

(2)开源的工作流管理器

(3)批处理工作流,用于跑Hadoop的job

(4)提供了一个易于使用的用户界面来维护和跟踪工作流程

(5)特性:

兼容任意Hadoop版本;易用的web UI;易用上传web及https工作流;有project工作空间;

工作流调度;模块化及可插拔的;授权和认证过程;跟踪操作行为;邮件/短信告警;

支持失败作业的重试;SLA告警和自动终结。

 

5、Azkaban架构

(1)三个组件:关系型数据库MySQL、Azkaban web server、Azkaban Executor Server 

(2)关系型数据库MySQL:Azkaban使用MySQL存储状态,web server和Executor Server也可以访问MySQL

(3)web server使用DB的原因:项目管理、执行流程状态、调度、保存sla信息,历史流程状态。

(4)Executor Server使用DB的原因:访问项目、执行工作流、日志信息、内部依赖。

(5)web server:是一个UI界面(user interface),做Azkaban的维护和管理。处理项目管理、授权、调度,监控执行状态。

 

6、Azkaban运行模式

(1) version 3.0。不同运行模式,安装不同

(2)solo-server mode: 数据信息存储在H2中的,这里做测试统一存储到MySQL中。web server和Executor Server是运行在同一个进程中。

(3)two server mode::more 生产环境。数据信息存储在MySQL中。web server和Executor Server是运行在不同的进程中。所以一定有master-slave,做主备。

(4)distributed multiple-executor mode(*****):most 生产环境。The multiple executor mode is for most serious production environment. Its DB should be backed by MySQL instances with master-slave set up. The web server and executor servers should ideally run in different hosts so that upgrading and maintenance shouldn’t affect users. This multiple host setup brings in robust and scalable aspect to Azkaban.

 

7、Azkaban源码编译

(1)从3.0版本之后,Azkaban就没有安装包了,所以要进行源码编译。

(2)3.40.0版本下载网站:https://github.com/azkaban/azkaban/tags?after=3.45.2

通过FinalShell,将azkaban-3.40.0.tar放入Hadoop虚拟机的/home/hadoop/software,然后解压到/home/hadoop/app。

[hadoop@hadoop000 software]$ ll
total 741560
-rw-rw-r-- 1 hadoop hadoop  14400021 Sep  3 00:00 azkaban-3.40.0.tar.gz
[hadoop@hadoop000 software]$ tar -zxvf azkaban-3.40.0.tar.gz -C ~/app/
[hadoop@hadoop000 app]$ ll
total 4
drwxrwxr-x 13 hadoop hadoop 4096 Jan 11  2018 azkaban-3.40.0

 到网址https://services.gradle.org/distributions/gradle-4.1-all.zip下载gradle-4.1-all.zip

通过FinalShell,将gradle-4.1-all.zip放入Hadoop虚拟机的/home/hadoop/software

[hadoop@hadoop000 software]$ ll
total 829520
-rw-rw-r-- 1 hadoop hadoop  90068721 Sep  3 00:28 gradle-4.1-all.zipj

进入以下路径,查看源代码目录src,及通过build.gradle来构建的源代码。

在这个路径下/home/hadoop/app/azkaban-3.40.0/azkaban-solo-server无安装包。

[hadoop@hadoop000 azkaban-solo-server]$ pwd
/home/hadoop/app/azkaban-3.40.0/azkaban-solo-server
[hadoop@hadoop000 azkaban-solo-server]$ ls
build.gradle  src

进入以下路径,拷贝gradle-4.1-all.zip至/home/hadoop/app/azkaban-3.40.0/gradle/wrapper下面

[hadoop@hadoop000 wrapper]$ pwd
/home/hadoop/app/azkaban-3.40.0/gradle/wrapper
[hadoop@hadoop000 wrapper]$ ls
gradle-wrapper.jar  gradle-wrapper.properties
[hadoop@hadoop000 wrapper]$ cp /home/hadoop/software/gradle-4.1-all.zip .

进入/home/hadoop/app/azkaban-3.40.0/gradle/wrapper,修改gradle-wrapper.properties

#Sat Sep 09 11:12:17 PDT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=gradle-4.1-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

 (3)构建 Azkaban,创建安装文件,进行编译

[hadoop@hadoop000 azkaban-3.40.0]$ su root
Password: 
[root@hadoop000 azkaban-3.40.0]# yum install -y git
[root@hadoop000 azkaban-3.40.0]# yum install -y gcc-c++*
[root@hadoop000 azkaban-3.40.0]# ./gradlew build installDist -x test

目录

[root@hadoop000 azkaban-3.40.0]# ll
total 84
drwxrwxr-x 4 hadoop hadoop    50 Sep  3 17:24 az-core
drwxrwxr-x 4 hadoop hadoop    50 Sep  3 17:24 az-exec-util
-rw-rw-r-- 1 hadoop hadoop 21925 Jan 11  2018 az-intellij-style.xml
drwxrwxr-x 5 hadoop hadoop    80 Sep  3 17:31 azkaban-common                  #azkaban常用工具类
drwxrwxr-x 4 hadoop hadoop    68 Sep  3 17:24 azkaban-db                      #存放sql语句
drwxrwxr-x 4 hadoop hadoop    68 Sep  3 17:28 azkaban-exec-server             #执行端的server
drwxrwxr-x 4 hadoop hadoop    50 Sep  3 17:32 azkaban-hadoop-security-plugin  #Hadoop的权限
drwxrwxr-x 4 hadoop hadoop    68 Sep  3 17:28 azkaban-solo-server
drwxrwxr-x 4 hadoop hadoop    67 Sep  3 17:24 azkaban-spi                     #存储接口、异常信息处理类
drwxrwxr-x 6 hadoop hadoop   120 Sep  3 17:35 azkaban-web-server
-rw-rw-r-- 1 hadoop hadoop  8279 Jan 11  2018 build.gradle
-rw-rw-r-- 1 hadoop hadoop  6020 Jan 11  2018 CONTRIBUTING.md
drwxrwxr-x 3 hadoop hadoop    21 Jan 11  2018 gradle
-rw-rw-r-- 1 hadoop hadoop  1488 Jan 11  2018 gradle.properties
-rwxrwxr-x 1 hadoop hadoop  5296 Jan 11  2018 gradlew
-rw-rw-r-- 1 hadoop hadoop  2260 Jan 11  2018 gradlew.bat
-rw-rw-r-- 1 hadoop hadoop 11358 Jan 11  2018 LICENSE
-rw-rw-r-- 1 hadoop hadoop  2359 Jan 11  2018 NOTICE
-rw-rw-r-- 1 hadoop hadoop  1453 Jan 11  2018 README.md
-rw-rw-r-- 1 hadoop hadoop   879 Jan 11  2018 settings.gradle
drwxrwxr-x 6 hadoop hadoop   105 Sep  3 17:24 test

切换模式 azkaban-solo-server

[hadoop@hadoop000 azkaban-3.40.0]$ cd azkaban-solo-server
[hadoop@hadoop000 azkaban-solo-server]$ ls
build  build.gradle  src
[hadoop@hadoop000 azkaban-solo-server]$ cd build
[hadoop@hadoop000 build]$ ls
classes  distributions  install  libs  resources  tmp
[hadoop@hadoop000 build]$ cd distributions/
[hadoop@hadoop000 distributions]$ ls
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz  azkaban-solo-server-0.1.0-SNAPSHOT.zip

切换模式 azkaban-web-server

[hadoop@hadoop000 azkaban-3.40.0]$ cd azkaban-web-server
[hadoop@hadoop000 azkaban-web-server]$ cd build
[hadoop@hadoop000 build]$ cd distributions/
[hadoop@hadoop000 distributions]$ ls
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz  azkaban-web-server-0.1.0-SNAPSHOT.zip

切换模式    azkaban-exec-server

[hadoop@hadoop000 azkaban-3.40.0]$ cd azkaban-exec-server
[hadoop@hadoop000 azkaban-exec-server]$ cd build
[hadoop@hadoop000 build]$ cd distributions/
[hadoop@hadoop000 distributions]$ ls
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz  azkaban-exec-server-0.1.0-SNAPSHOT.zip

Azkaban 编译注意事项:

编译成功之后,去对应的目录下找到对应模式的安装包即可。

 

8、Azkaban环境搭建

(1)将azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz解压到app目录里:azkaban-solo-server-0.1.0-SNAPSHOT

即解压编译后的安装包到~/app目录中

[hadoop@hadoop000 distributions]$ ls
azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz  azkaban-solo-server-0.1.0-SNAPSHOT.zip
[hadoop@hadoop000 distributions]$ pwd
/home/hadoop/app/azkaban-3.40.0/azkaban-solo-server/build/distributions
[hadoop@hadoop000 distributions]$ tar -zvxf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ~/app/

(2)目录结构

[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT
[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ ll
total 8
drwxr-xr-x 2 hadoop hadoop   82 Sep  3 17:35 bin     #启动/终止相关的
drwxr-xr-x 2 hadoop hadoop   82 Sep  3 17:35 conf    #配置azkaban属性
drwxr-xr-x 2 hadoop hadoop 4096 Sep  3 17:35 lib     #依赖包存储目录
drwxr-xr-x 3 hadoop hadoop   22 Sep  3 17:35 plugins #可插拔的插件
drwxr-xr-x 2 hadoop hadoop 4096 Sep  3 17:35 sql     #sql相关语句
drwxr-xr-x 6 hadoop hadoop   73 Sep  3 17:35 web     #web server相关的css\image..

(3)启动azkaban

验证:jps。只要有进程;ip:8081,通过浏览器访问到界面即可。

[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT
[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/azkaban-solo-start.sh

 终止命令:

[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/azkaban-solo-shutdown.sh

注意启动时的端口号:本机的8081端口

2021/09/03 18:11:00.132 +0800 INFO [log] [Azkaban] Started SocketConnector@0.0.0.0:8081
2021/09/03 18:11:00.132 +0800 INFO [AzkabanWebServer] [Azkaban] Server started

注意启动时的进程:jps--》5502 AzkabanSingleServer

看一下ip地址:192.168.131.101

打开浏览器:Azkaban Web Client

其中浏览器中的账号密码从以下里找:

#先终止
[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/azkaban-solo-shutdown.sh
[hadoop@hadoop000 conf]$ pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT/conf
[hadoop@hadoop000 conf]$ vi azkaban.properties
azkaban.name=Test
azkaban.label=My Local Azkaban
[hadoop@hadoop000 conf]$ pwd
/home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT/conf
[hadoop@hadoop000 conf]$ vi azkaban-users.xml

##这里可以添加账号、密码、角色
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>

  

 9、Azkaban快速入门案例

(1)使用官网example

(2)新建Project

(3)上传zip包

(4)执行

(5)结果在history-flow-job list-details

posted @ 2021-09-03 15:01  酱汁怪兽  阅读(213)  评论(0编辑  收藏  举报