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