一个完整的数据分析系统通常都由大量的工作任务单元组成,例如脚本shell程序、数据采集、数据处理MR、数据存储、java程序等,各任务单元之间存在时间先后及依赖关系,为了将这些复杂的执行计划组织起来,需要一个工作流调度系统来调度执行。
英文解释:
Azkaban is a batch workflow job scheduler created at LinkedIn to run Hadoop jobs. Azkaban resolves the ordering through job dependencies and provides an easy to use web user interface to maintain and track your workflows.
翻译一下:
Azkaban是一个在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。Azkaban通过作业依赖性解决了排序问题,并提供了一个易于使用的web用户界面来维护和跟踪您的工作流程。
Oozie 是一个开源的工作流和协作服务引擎,基于 Apache Hadoop 的数据处理任务。Oozie 是可扩展的、可伸缩的面向数据的服务,运行在 Hadoop 平台上。
Oozie 包括一个离线的 Hadoop 处理的工作流解决方案,以及一个查询处理 API。
Azkaban工作流管理器由三个核心部分组成,分别是Relational Database(关系型数据库MySQL)、AzkabanWebServer(Web服务器)、AzkabanExecutorServer(执行服务器)。三者关系具体如图所示。
使用的数据库是内置的H2,而且web server和executor server都在统一进程中运行,通常用于小规模的测试阶段
使用的数据库是主从设置的mysql,web server和executor server在不同的进程中,通常用于比较复杂的生产环境。
使用的数据库是主从设置的mysql,web server和executor server在不同的主机中,通常用于特别复杂的生产环境。
两种下载方式
第一种:通用的github项目的下载方式,此处使用这种方式
GitHub - azkaban/azkaban: Azkaban workflow manager.
第二种:有选择性的下载自己需要的版本
Releases · azkaban/azkaban (github.com)
先安装unzip
解压
移动到/export/servers文件夹下
小知识:jar包依赖管理方式有两种
azkaban是用Gradle方式来开发的,所以编译也要用Gradle
编译
./gradlew build -x test
出现错误,需要先安装git
小知识:版本和代码管理的工具主要有git和svn
安装git
继续进行编译,但是使用gradle国外镜像编译太慢了,几个小时也没成功,下面我们修改gradle为国内镜像。
用了一个半小时,终于编译成功了,可能是网速比较慢。
cd /export/servers/azkaban-master/azkaban-web-server/build/distributions
ll
cd /export/servers/azkaban-master/azkaban-exec-server/build/distributions
ll
cd /export/servers/azkaban-master/azkaban-db/build/distributions
ll
cd /export/servers/azkaban-master/azkaban-solo-server/build/distributions
ll
查看CentOS版本
安装wget
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
# 安装 i代表安装,v代表可视的,h代表进度
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 不执行安装会出错
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-<当前年份>
# 安装mysql
yum install mysql-community-server
systemctl start mysqld.service
systemctl status mysqld
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Bigdata20!';
其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功
提示错误,不允许远程连接
GRANT ALL PRIVILEGES ON *.* TO '20bigdata'@'%' IDENTIFIED BY 'Bigdata2022!' WITH GRANT OPTION;
use azkaban;
source /export/servers/azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql
show tables;
先创建azkaban目录
cd /export/servers/azkaban-master/azkaban-web-server/build/distributions/
tar zvxf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C /export/servers/azkaban
修改azkaban-properties
提示没有激活的exector服务
再次查看进程
发现并没有启动web服务
查看exec服务端口号
执行激活命令
curl -G "hadoop001:37068/executor?action=activate"
说明:
执行启动命令
查看启动日志
输入用户名:azkaban,密码:azkaban,登录
先创建两个有依赖关系的job文件first.job和second.job
first.job
second.job
注意:创建项目时名称和描述都不能出现中文。
点击立即执行
修改commonprivate文件
重启时需要激活exec
curl -G "hadoop001:45241/executor?action=activate"
# mr.job
type=command
command=hadoop jar hadoop-mapreduce-examples-3.1.4.jar wordcount hdfs://hadoop001:9000/input hdfs://hadoop001:9000/output/mrjobresult
这个需要等一会才运行完。
参考文章:
CentOS7安装MySQL(完整版)
【CentOS 7.9】安装mysql 5.7笔记