一、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 -p123456mysql> 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=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkaban_testmysql.user=rootmysql.password=123456mysql.numconnections=100# Azkaban Jetty server properties.jetty.maxThreads=25jetty.ssl.port=8443jetty.port=8081jetty.keystore=keystorejetty.password=123456jetty.keypassword=123456jetty.truststore=keystorejetty.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=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkaban_testmysql.user=rootmysql.password=123456mysql.numconnections=100

7、启动服务器

Web服务

[root@hop01 bin]# pwd/opt/azkaban/server/bin[root@hop01 bin]# lltotal 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.jobtype=commandcommand=echo 'mySimpleJob'

打成zip包

[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job

创立我的项目

上传工作包

执行工作

2、工作程序执行

创立工作A

[root@hop01 flow_02]# vim simpleA.jobtype=commandcommand=echo 'simplejobA'

创立工作B

[root@hop01 flow_02]# vim simpleB.jobtype=commanddependencies=simpleAcommand=echo 'simplejobB'

打包工作

[root@hop01 flow_02]# zip -q -r simpleTwoJob.zip simpleA.job simpleB.job

同样的操作形式,两个工作放在zip包中,通过Web服务上传,察看执行成果即可。

四、源代码地址

GitHub·地址https://github.com/cicadasmile/big-data-parentGitEE·地址https://gitee.com/cicadasmile/big-data-parent

浏览标签

【Java根底】【设计模式】【构造与算法】【Linux零碎】【数据库】

【分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot根底】

【数据分析】【技术导图】【 职场】