
数据调度组件:基于Azkaban协调时序任务执行
一、Azkaban概述
1、任务时序
在数据服务的业务场景中,很常见的业务流程就是日志文件经过大数据分析,再向业务输出结果数据;在该过程中会有很多任务需要执行,并且很难精准把握任务执行的结束时间,但是又希望整个任务链尽快结束释放资源。
大致执行顺序如下:
- 业务日志文件同步到HDFS文件系统;
- 经过Hadoop执行分析计算过程;
- 结果数据在导入数仓进行存储;
- 最终需要把数仓内数据同步到业务库;
这样的流程不必业务中任务调度,时间基本是可预估的,只要把握留足任务间隔时间即可,大数据的任务链路通常需要一个结束直接启动另一个,以此降低时间成本,初入数据服务公司时,就发生过因为同步任务执行结束但是最后的个别CSV数据文件未生成结束的案例,导致近百万的分析数据同步更新业务库失败。
2、Azkaban简介
Azkaban是由Linkedin公司推出的可以管理批量工作流任务的调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban特点和优势
- 提供功能清晰,简单易用的 Web UI 界面;
- 作业配置简单,任务作业依赖关系清晰;
- 提供可扩展的组件;
- 基于Java语言开发,易于二次开发;
相比较于Oozie配置工作流的过程是编写大量的XML配置,并且其代码复杂度比较高,不易于二次开发,Azkaban则显得轻量级,功能和用法相对简单和容易使用。
二、服务安装
1、核心包
Web服务
执行服务
SQL脚本
2、安装路径
上传上面三个安装包,并解压操作。
3、MySQL导入脚本
查看表
4、SSL配置
生成文件:keystore
拷贝到AzkabanWeb服务器目录下:
5、Web服务配置
基础配置
核心修改内容:MySQL和Jetty。
这里配置符合本地配置参数即可。
用户配置
增加一个管理员用户:
6、Executor服务配置
核心修改内容:MySQL和时区。
7、启动服务器
Web服务
这里分别是启动和关闭的脚本。
Executor服务
启动日志
两个服务的关键尾行日志:
登录界面
注意这里是基于https协议:
三、操作案例
1、入门案例
创建command类型job
打成zip包
创建项目
上传任务包
执行任务
2、任务顺序执行
创建任务A
创建任务B
打包任务
同样的操作方式,两个任务放在zip包中,通过Web服务上传,观察执行效果即可。
四、源代码地址
本文转载自公众号:知了一笑
