大数据技术之Azkaban1

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 大数据技术之Azkaban

第 1 章 Azkaban 概论

1.1 为什么需要工作流调度系统

1)一个完整的数据分析系统通常都是由大量任务单元组成:

Shell 脚本程序,Java 程序,MapReduce 程序、Hive 脚本等

2)各任务单元之间存在时间先后及前后依赖关系

3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

为什么需要工作流调度系统


1.2 常见工作流调度系统

1)简单的任务调度:直接使用 Linux 的 Crontab 来定义;

2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如 Ooize、Azkaban、Airflow、

DolphinScheduler 等。

1.3 Azkaban 与 Oozie 对比

总体来说,Ooize 相比 Azkaban 是一个重量级的任务调度系统,功能全面,但配置使用

也更复杂。如果可以不在意某些功能的缺失,轻量级调度器 Azkaban 是很不错的候选对象。


第 2 章 Azkaban 入门

2.1 集群模式安装

2.1.1 上传 tar 包

1)将 azkaban-db-3.84.4.tar.gz,azkaban-exec-server-3.84.4.tar.gz,azkaban-web

server-3.84.4.tar.gz 上传到 hadoop102 的/opt/software 路径

[atguigu@hadoop102 software]$ ll
总用量 35572
-rw-r--r--. 1 atguigu atguigu 6433 4 月 18 17:24 azkaban-db-3.84.4.tar.gz
-rw-r--r--. 1 atguigu atguigu 16175002 4 月 18 17:26 azkaban-exec-server-3.84.4.tar.gz
-rw-r--r--. 1 atguigu atguigu 20239974 4 月 18 17:26 azkaban-web-server-3.84.4.tar.gz


2)新建/opt/module/azkaban 目录,并将所有 tar 包解压到这个目录下


[atguigu@hadoop102 software]$ mkdir /opt/module/azkaban


3)解压 azkaban-db-3.84.4.tar.gz、 azkaban-exec-server-3.84.4.tar.gz 和 azkaban-


web-server-3.84.4.tar.gz 到/opt/module/azkaban 目录下


[atguigu@hadoop102 software]$ tar -zxvf azkaban-db-3.84.4.tar.gz -C /opt/module/azkaban/
[atguigu@hadoop102 software]$ tar -zxvf azkaban-exec-server-3.84.4.tar.gz -C /opt/module/azkaban/
[atguigu@hadoop102 software]$ tar -zxvf azkaban-web-server-3.84.4.tar.gz -C /opt/module/azkaban/

4)进入到/opt/module/azkaban 目录,依次修改名称

[atguigu@hadoop102 azkaban]$ mv azkaban-exec-server-3.84.4/ azkaban-exec
[atguigu@hadoop102 azkaban]$ mv azkaban-web-server-3.84.4/ azkaban-web


2.1.2 配置 MySQL

1)正常安装 MySQL


2)启动 MySQL


[atguigu@hadoop102 azkaban]$ mysql -uroot -p000000


3)登陆 MySQL,创建 Azkaban 数据库


mysql> create database azkaban;


4)创建 azkaban 用户并赋予权限


设置密码有效长度 4 位及以上


mysql> set global validate_password_length=4;


设置密码策略最低级别


mysql> set global validate_password_policy=0;


创建 Azkaban 用户,任何主机都可以访问 Azkaban,密码是 000000


mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY '000000';


赋予 Azkaban 用户增删改查权限


mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;

5)创建 Azkaban 表,完成后退出 MySQL

mysql> use azkaban;
mysql> source /opt/module/azkaban/azkaban-db-3.84.4/create-all-sql-3.84.4.sql
mysql> quit;

6)更改 MySQL 包大小;防止 Azkaban 连接 MySQL 阻塞

[atguigu@hadoop102 software]$ sudo vim /etc/my.cnf

在[mysqld]下面加一行 max_allowed_packet=1024M

[mysqld]
max_allowed_packet=1024M

[mysqld]

max_allowed_packet=1024M

2.1.3 配置 Executor Server

Azkaban Executor Server 处理工作流和作业的实际执行。

1)编辑 azkaban.properties

[atguigu@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-exec/conf/azkaban.properties
修改如下标红的属性
#...
default.timezone.id=Asia/Shanghai
#...
azkaban.webserver.url=http://hadoop102:8081
executor.port=12321
#...
database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=azkaban
mysql.password=000000
mysql.numconnections=100

2)同步 azkaban-exec 到所有节点

[atguigu@hadoop102 azkaban]$ xsync /opt/module/azkaban/azkaban-exec


3)必须进入到/opt/module/azkaban/azkaban-exec 路径(因为有些资源默认使用的都是相对路径),分别在三台机器上,启动 executor

server

[atguigu@hadoop102 azkaban-exec]$ bin/start-exec.sh
[atguigu@hadoop103 azkaban-exec]$ bin/start-exec.sh
[atguigu@hadoop104 azkaban-exec]$ bin/start-exec.sh

注意:如果在/opt/module/azkaban/azkaban-exec 目录下出现 executor.port 文件,说明启动成功

4)下面激活 executor,需要

[atguigu@hadoop102 azkaban-exec]$ curl -G "hadoop102:12321/executor?action=activate" && echo
[atguigu@hadoop103 azkaban-exec]$ curl -G "hadoop103:12321/executor?action=activate" && echo
[atguigu@hadoop104 azkaban-exec]$ curl -G "hadoop104:12321/executor?action=activate" && echo

如果三台机器都出现如下提示,则表示激活成功

{"status":"success"}

2.1.4 配置 Web Server

Azkaban Web Server 处理项目管理,身份验证,计划和执行触发。

1)编辑 azkaban.properties

[atguigu@hadoop102 azkaban]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban.properties

修改如下属性

...
default.timezone.id=Asia/Shanghai
...
database.type=mysql
mysql.port=3306
mysql.host=hadoop102
mysql.database=azkaban
mysql.user=azkaban
mysql.password=000000
mysql.numconnections=100
...
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

骚戴理解:azkaban.executorselector.filters其实就是在多个执行器executor的时候把任务分发到哪个executor的分发策略


StaticRemainingFlowSize:正在排队的任务数,选择排队最少的;


CpuStatus:CPU 占用情况,选择cpu占用率最低的


MinimumFreeMemory:内存占用情况。测试环境,必须将 MinimumFreeMemory 删除掉,否则它会认为集群资源不够,不执行,选择指定内存的。

2)修改 azkaban-users.xml 文件,添加 atguigu 用户

[atguigu@hadoop102 azkaban-web]$ vim /opt/module/azkaban/azkaban-web/conf/azkaban-users.xml


<azkaban-users>
     <user groups="azkaban" password="azkaban" roles="admin" 
    username="azkaban"/>
     <user password="metrics" roles="metrics" username="metrics"/>
     <user password="atguigu" roles="admin" username="atguigu"/>
     <role name="admin" permissions="ADMIN"/>
     <role name="metrics" permissions="METRICS"/>
</azkaban-users>

3)必须进入到 hadoop102 的/opt/module/azkaban/azkaban-web 路径,启动 web server


[atguigu@hadoop102 azkaban-web]$ bin/start-web.sh


4)访问 http://hadoop102:8081,并用 atguigu 用户登陆

2.2 Work Flow 案例实操

2.2.1 HelloWorld 案例

1)在 windows 环境,新建 azkaban.project 文件,编辑内容如下

azkaban-flow-version: 2.0

注意:该文件作用,是采用新的 Flow-API 方式解析 flow 文件。

2)新建 basic.flow 文件,内容如下


(1)Name:job 名称


(2)Type:job 类型。command 表示你要执行作业的方式为命令


(3)Config:job 配置


3)将 azkaban.project、basic.flow 文件压缩到一个 zip 文件,文件名称必须是英文。


4)在 WebServer 新建项目:http://hadoop102:8081/index


5)给项目名称命名和添加项目描述

6)first.zip 文件上传

7)选择上传的文件

8)执行任务流

9)在日志中,查看运行结果


2.2.2 作业依赖案例

需求:JobA 和 JobB 执行完了,才能执行 JobC

具体步骤:

1)修改 basic.flow 为如下内容

(1)dependsOn:作业依赖,后面案例中演示

2)将修改后的 basic.flow 和 azkaban.project 压缩成 second.zip 文件

3)重复 2.3.1 节 HelloWorld 后续步骤。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
16天前
|
数据采集 人工智能 分布式计算
ODPS在AI时代的发展战略与技术演进分析报告
ODPS(现MaxCompute)历经十五年发展,从分布式计算平台演进为AI时代的数据基础设施,以超大规模处理、多模态融合与Data+AI协同为核心竞争力,支撑大模型训练与实时分析等前沿场景,助力企业实现数据驱动与智能化转型。
82 4
|
2月前
|
存储 分布式计算 Hadoop
Hadoop框架解析:大数据处理的核心技术
组件是对数据和方法的封装,从用户角度看是实现特定功能的独立黑盒子,能够有效完成任务。组件,也常被称作封装体,是对数据和方法的简洁封装形式。从用户的角度来看,它就像是一个实现了特定功能的黑盒子,具备输入和输出接口,能够独立完成某些任务。
|
22天前
|
SQL 分布式计算 大数据
我与ODPS的十年技术共生之路
ODPS十年相伴,从初识的分布式计算到共生进化,突破架构边界,推动数据价值深挖。其湖仓一体、隐私计算与Serverless能力,助力企业降本增效,赋能政务与商业场景,成为数字化转型的“数字神经系统”。
|
2月前
|
数据采集 自然语言处理 分布式计算
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
大数据岗位技能需求挖掘:Python爬虫与NLP技术结合
|
2月前
|
存储 分布式计算 算法
Java 大视界 -- Java 大数据在智能教育在线考试监考与作弊检测中的技术创新(193)
本文探讨了Java大数据技术在智能教育在线考试监考与作弊检测中的创新应用。随着在线考试的普及,作弊问题日益突出,传统监考方式难以应对。通过Java大数据技术,可实现考生行为分析、图像识别等多维度监控,提升作弊检测的准确性与效率。结合Hadoop与Spark等技术,系统能实时处理海量数据,构建智能监考体系,保障考试公平性,推动教育评价体系的数字化转型。
|
2月前
|
SQL 缓存 监控
大数据之路:阿里巴巴大数据实践——实时技术与数据服务
实时技术通过流式架构实现数据的实时采集、处理与存储,支持高并发、低延迟的数据服务。架构涵盖数据分层、多流关联,结合Flink、Kafka等技术实现高效流计算。数据服务提供统一接口,支持SQL查询、数据推送与定时任务,保障数据实时性与可靠性。
|
6月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
274 79
|
4月前
|
人工智能 分布式计算 大数据
MCP、MaxFrame与大数据技术全景解析
本文介绍了 MCP 协议、MaxFrame 分布式计算框架以及大数据基础设施建设的相关内容。MCP(Model Context Protocol)是一种开源协议,旨在解决 AI 大模型与外部数据源及工具的集成问题,被比喻为大模型的“USB 接口”,通过统一交互方式降低开发复杂度。其核心架构包括 Client、Server、Tool 和 Schema 四个关键概念,并在百炼平台中得到实践应用。MaxFrame 是基于 Python 的高性能分布式计算引擎,支持多模态数据处理与 AI 集成,结合 MaxCompute 提供端到端的数据处理能力。
|
5月前
|
数据采集 分布式计算 数据可视化
大数据项目成功的秘诀——不只是技术,更是方法论!
大数据项目成功的秘诀——不只是技术,更是方法论!
139 8
大数据项目成功的秘诀——不只是技术,更是方法论!
|
传感器 分布式计算 安全
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。

热门文章

最新文章