数据调度组件:基于Azkaban协调时序任务执行
一、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基础】
数据调度组件:基于Azkaban协调时序任务执行的更多相关文章
- 基于Azkaban的任务定时调度实践
本文由云+社区发表 作者:maxluo 一.Azkaban介绍 Azkaban是LinkedIn开源的任务调度框架,类似于JavaEE中的JBPM和Activiti工作流框架. Azkaban功能和特 ...
- 数据搬运组件:基于Sqoop管理数据导入和导出
本文源码:GitHub || GitEE 一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.ora ...
- 联童科技基于incubator-dolphinscheduler从0到1构建大数据调度平台之路
联童科技是一家智能化母婴童产业平台,从事母婴童行业以及互联网技术多年,拥有丰富的母婴门店运营和系统开发经验,在会员经营和商品经营方面,能够围绕会员需求,深入场景,更贴近合作伙伴和消费者,提供最优服务产 ...
- java基于xml配置的通用excel单表数据导入组件(四、DAO主处理类)
package XXXXX.manage.importexcel; import java.beans.IntrospectionException; import java.io.BufferedR ...
- java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)
主要应用技术:poi + betwixt + reflect 一.实际应用过程 1.创建与目标表结构一样,表名为‘{目标表名}_import’的临时表: 2.创建用于存储导入问题数据的表:t_impo ...
- ORACLE调度之基于事件的调度(二)【weber出品】
一.回顾 调度分基于时间的调度和基于事件的调度. 稍微复习一下前面的只是请浏览:<ORACLE调度之基于时间的调度(一)[weber出品]> 二.知识补充 1.队列:一种数据结构,就像一根 ...
- 自定义react数据验证组件
我们在做前端表单提交时,经常会遇到要对表单中的数据进行校验的问题.如果用户提交的数据不合法,例如格式不正确.非数字类型.超过最大长度.是否必填项.最大值和最小值等等,我们需要在相应的地方给出提示信息. ...
- vue2.0 富文本组件(基于wangeditor)
1. 本组件基于 wangeditor http://www.wangeditor.com/ 如有侵权 请告知, 2. 效果图 3. 依赖安装 package.json 中 devDependenci ...
- 8月Meetup | “数据调度+分析引擎”解锁企业数字化转型之路
编辑切换为居中 添加图片注释,不超过 140 字(可选) 大数据是一种规模大到在获取.存储.管理.分析方面大大超出了传统数据库软件工具能力范围的数据集合,而大数据作为企业运转的基础,只有经过提 ...
随机推荐
- Linux 学习笔记分享: Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0)
Linux 用户组的权限: drwx------ 700权限(d 目录 ,r=4,w=2,x=1:rwx=7;---=0;---=0) 1 1 Linux 用户组的权限: drwx------ 700 ...
- DOH & TRR & HTTPS & DNS
DOH & TRR & HTTPS & DNS DNS over HTTPS Trusted Recursive Resolver DNS 解析过程图解 DNS 解析过程 递归 ...
- local JSON file loader in js
local JSON file loader in js "use strict"; /** * * @author xgqfrms * @license MIT * @copyr ...
- ng 设置动态的document title
使用Title服务 相关文章 配置路由, 添加data.title参数 import { NgModule } from '@angular/core'; import { RouterModule, ...
- spring5学习笔记
Spring5 框架概述 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spring 有两个核心部分:IOC 和 Aop (1)IOC:控 ...
- C++算法代码——字符串p型编码
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1681 题目描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字 ...
- 安装node环境以及cnpm
其实我老早以前就发现 node 版本太高也不行 以往的版本下载地址: https://nodejs.org/zh-cn/download/releases/ 下载并解压到 /usr/local/ 下 ...
- wxWidgets源码分析(9) - wxString
目录 wxString wxString的中文字符支持 Windows Linux Unicode Linux UTF-8 总结 wxString与通用字符串的转换 wxString对象的创建 将wx ...
- golang操作mysql2
目录 Go操作MySQL 连接 下载依赖 使用MySQL驱动 初始化连接 SetMaxOpenConns SetMaxIdleConns CRUD 建库建表 查询 单行查询 多行查询 插入数据 更新数 ...
- 【Arduino学习笔记06】上拉电阻和下拉电阻
为什么要用上拉电阻和下拉电阻?--避免输入引脚处于"悬空"状态 下图是一个没有使用上拉电阻/下拉电阻的电路图: 在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为 ...