一、Azkaban 概述
1、工作时序
在数据服务的业务场景中,很常见的业务流程就是日志文件通过大数据分析,再向业务输入后果数据;在该过程中会有很多工作须要执行,并且很难精准把握工作执行的完结工夫,然而又心愿整个工作链尽快完结开释资源。
大抵执行程序如下:
- 业务日志文件同步到 HDFS 文件系统;
- 通过 Hadoop 执行剖析计算过程;
- 后果数据在导入数仓进行存储;
- 最终须要把数仓内数据同步到业务库;
这样的流程不用业务中任务调度,工夫根本是可预估的,只有把握留足工作间隔时间即可,大数据的工作链路通常须要一个完结间接启动另一个,以此升高工夫老本,初入数据服务公司时,就产生过因为同步工作执行完结然而最初的个别 CSV 数据文件未生成完结的案例,导致近百万的剖析数据同步更新业务库失败。
2、Azkaban 简介
Azkaban 是由 Linkedin 公司推出的能够治理批量工作流工作的调度器,用于在一个工作流内以一个特定的程序运行一组工作和流程。Azkaban 应用 job 配置文件建设工作之间的依赖关系,并提供一个易于应用的 web 用户界面保护和跟踪你的工作流。
Azkaban 特点和劣势
- 提供性能清晰,简略易用的 Web UI 界面;
- 作业配置简略,工作作业依赖关系清晰;
- 提供可扩大的组件;
- 基于 Java 语言开发,易于二次开发;
相比拟于 Oozie 配置工作流的过程是编写大量的 XML 配置,并且其代码复杂度比拟高,不易于二次开发,Azkaban 则显得轻量级,性能和用法绝对简略和容易应用。
二、服务装置
1、外围包
Web 服务
azkaban-web-server-2.5.0.tar.gz
执行服务
azkaban-executor-server-2.5.0.tar.gz
SQL 脚本
azkaban-sql-script-2.5.0.tar.gz
2、装置门路
上传下面三个安装包,并解压操作。
[root@hop01 azkaban]# pwd
/opt/azkaban
[root@hop01 azkaban]# tar -zxvf azkaban-web-server-2.5.0.tar.gz
[root@hop01 azkaban]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz
[root@hop01 azkaban]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz
[root@hop01 azkaban]# mv azkaban-web-2.5.0/ server
[root@hop01 azkaban]# mv azkaban-executor-2.5.0/ executor
3、MySQL 导入脚本
[root@hop01 ~]# mysql -uroot -p123456
mysql> create database azkaban_test;
mysql> use azkaban_test;
mysql> source /opt/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
查看表
4、SSL 配置
[root@hop01 opt]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
生成文件:keystore
拷贝到 AzkabanWeb 服务器目录下:
[root@hop01 opt]# mv keystore /opt/azkaban/server/
5、Web 服务配置
根底配置
[root@hop01 conf]# pwd
/opt/azkaban/server/conf
[root@hop01 conf]# vim azkaban.properties
外围批改内容:MySQL 和 Jetty。
default.timezone.id=Asia/Shanghai
# Azkaban MySQL server properties.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban_test
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
这里配置合乎本地配置参数即可。
用户配置
[root@hop01 conf]# vim azkaban-users.xml
减少一个管理员用户:
<azkaban-users>
<user username="admin" password="admin" roles="admin,metrics" />
</azkaban-users>
6、Executor 服务配置
[root@hop01 conf]# pwd
/opt/azkaban/executor/conf
[root@hop01 conf]# vim azkaban.properties
外围批改内容:MySQL 和时区。
default.timezone.id=Asia/Shanghai
# Azkaban MySQL server properties.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban_test
mysql.user=root
mysql.password=123456
mysql.numconnections=100
7、启动服务器
Web 服务
[root@hop01 bin]# pwd
/opt/azkaban/server/bin
[root@hop01 bin]# ll
total 16
-rwxr-xr-x 1 root root 161 Apr 21 2014 azkaban-web-shutdown.sh
-rwxr-xr-x 1 root root 1275 Apr 21 2014 azkaban-web-start.sh
这里别离是启动和敞开的脚本。
[root@hop01 bin]# /opt/azkaban/server/bin/azkaban-web-start.sh
Executor 服务
[root@hop01 bin]# /opt/azkaban/executor/bin/azkaban-executor-start.sh
启动日志
两个服务的要害尾行日志:
Azkaban Server running on ssl port 8443.
Azkaban Executor Server started on port 12321
登录界面
留神这里是基于 https 协定:
https://hop01:8443/
三、操作案例
1、入门案例
创立 command 类型 job
[root@hop01 flow_01]# pwd
/opt/azkaban/testJob/flow_01
[root@hop01 flow_01]# vim simple.job
type=command
command=echo 'mySimpleJob'
打成 zip 包
[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job
创立我的项目
上传工作包
执行工作
2、工作程序执行
创立工作 A
[root@hop01 flow_02]# vim simpleA.job
type=command
command=echo 'simplejobA'
创立工作 B
[root@hop01 flow_02]# vim simpleB.job
type=command
dependencies=simpleA
command=echo 'simplejobB'
打包工作
[root@hop01 flow_02]# zip -q -r simpleTwoJob.zip simpleA.job simpleB.job
同样的操作形式,两个工作放在 zip 包中,通过 Web 服务上传,察看执行成果即可。
四、源代码地址
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
浏览标签
【Java 根底】【设计模式】【构造与算法】【Linux 零碎】【数据库】
【分布式架构】【微服务】【大数据组件】【SpringBoot 进阶】【Spring&Boot 根底】
【数据分析】【技术导图】【职场】