首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据调度组件:基于Azkaban协调时序任务执行

数据调度组件:基于Azkaban协调时序任务执行

作者头像
知了一笑
发布2021-04-16 13:14:08
3000
发布2021-04-16 13:14:08
举报
文章被收录于专栏:知了一笑知了一笑

一、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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知了一笑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Azkaban概述
    • 1、任务时序
      • 2、Azkaban简介
      • 二、服务安装
        • 1、核心包
          • 2、安装路径
            • 3、MySQL导入脚本
              • 4、SSL配置
                • 5、Web服务配置
                  • 6、Executor服务配置
                    • 7、启动服务器
                    • 三、操作案例
                      • 1、入门案例
                        • 2、任务顺序执行
                        • 四、源代码地址
                        相关产品与服务
                        云数据库 SQL Server
                        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档