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。
1 2 3 4 5 6 7 | [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
1 2 3 | [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无安装包。
1 2 3 4 | [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下面
1 2 3 4 | [hadoop@hadoop000 wrapper]$ pwd /home/hadoop/app/azkaban-3.40.0/gradle/wrapper [hadoop@hadoop000 wrapper]$ ls gradle-wrapper.jar gradle-wrapper.properties |
1 | [hadoop@hadoop000 wrapper]$ cp /home/hadoop/software/gradle-4.1-all.zip . |
进入/home/hadoop/app/azkaban-3.40.0/gradle/wrapper,修改gradle-wrapper.properties
1 2 3 4 5 6 7 | #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,创建安装文件,进行编译
1 2 3 | [hadoop@hadoop000 azkaban-3.40.0]$ su root Password: [root@hadoop000 azkaban-3.40.0]# yum install -y git |
1 | [root@hadoop000 azkaban-3.40.0]# yum install -y gcc-c++* |
1 | [root@hadoop000 azkaban-3.40.0]# ./gradlew build installDist -x test |
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [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
1 2 3 4 5 6 7 8 9 | [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
1 2 3 4 5 | [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
1 2 3 4 5 | [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目录中
1 2 3 4 5 | [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)目录结构
1 2 3 4 5 6 7 8 9 10 | [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,通过浏览器访问到界面即可。
1 2 3 | [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 |
终止命令:
1 | [hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/azkaban-solo-shutdown.sh |
注意启动时的端口号:本机的8081端口
1 2 | 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
其中浏览器中的账号密码从以下里找:
1 | #先终止<br>[hadoop@hadoop000 azkaban-solo-server-0.1.0-SNAPSHOT]$ bin/azkaban-solo-shutdown.sh |
1 2 3 | [hadoop@hadoop000 conf]$ pwd /home/hadoop/app/azkaban-solo-server-0.1.0-SNAPSHOT/conf [hadoop@hadoop000 conf]$ vi azkaban.properties |
1 2 | azkaban.name=Test azkaban.label=My Local Azkaban |
1 2 3 4 5 6 | [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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf