数据调度组件:基于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.jobtype=command
command=echo 'mySimpleJob'
打成zip包
[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job
创建项目
上传任务包
执行任务
2、任务顺序执行
创建任务A
[root@hop01 flow_02]# vim simpleA.jobtype=command
command=echo 'simplejobA'
创建任务B
[root@hop01 flow_02]# vim simpleB.jobtype=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协调时序任务执行相关推荐
- 大数据调度系统为什么选型Apache DolphinScheduler ?
table of contents 一 .背景 二 .定位 三 .案例 四 .竟品对比 五 .DolphinScheduler简介 六 .社区发展 七.性能数据参考 一 .背景 今天跟客户聊天的时候, ...
- 数据搬运组件:基于Sqoop管理数据导入和导出
一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.oracle等)间进行数据的传递. 通常数据搬运 ...
- 土地利用结构信息熵_科研成果快报第163期:基于市政用水时序数据的城市混合土地利用感知与分析...
基于市政用水时序数据的城市混合土地利用感知与分析 Sensing Mixed Urban Land-Use Patterns Using Municipal Water Consumption Tim ...
- 如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断
如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断 背景 架构拓扑图 实现方式对比 UDF方案 优点: 缺点: 改写返回结果方案 优点: 缺点: 说明 实现 默认处理方式 redis报文解析 ...
- mysql ormlite_GitHub - loogn/Loogn.OrmLite: Loogn.OrmLite是一个简单、高效的基于.NET的数据访问组件!...
简要 Loogn.OrmLite是一个超简单.超高效.超灵活的基于.net standard 2.0的数据访问组件! 特点 支持sqlserver.mysql.sqlite3数据库: 通过扩展方法扩展 ...
- Apache DolphinScheduler——开源大数据调度器神器
目 录 1. 简 介 1.1 概 念 1.2 优缺点 1.3 哪些人适合DolphinScheduler(纯属个人观点) 1.4 社区 2. 集群模式安装详解(比官网还细,个人手把手实践避坑) 2.1 ...
- 壮实学数据技术05:数据调度
赵壮实/ 一个数据人的自留地 哈喽,大家好,我是怪力少女赵壮实. 很高兴和大家又一次相聚在周六的早上-在上节<壮实学数据技术04:ETL>中,我们讨论了数仓开发,今天我们衔接一下,讲讲数据 ...
- 荔枝机器学习平台与大数据调度系统“双剑合璧”,打造未来数据处理新模式!...
点击上方 蓝字关注我们 ✎ 编 者 按 在线音频行业在中国仍是蓝海一片.根据 CIC 数据显示,中国在线音频行业市场规模由 2016 年的 16 亿元增长至 2020 年的 131 亿元,复合年增长率 ...
- 大数据任务调度和数据同步组件初探
本文个人博客地址 本文公众号地址 背景 数据从最原始的状态,可能是一个 excel,一个文本,或者是来自业务数据库的数据,格式各种各样,落地到数据仓库.数据湖中,数据的同步过程 是必不可少的 图片来源 ...
最新文章
- 编译工具 之 ant
- linux平台学x86汇编语言学习集合帖
- python列表多重赋值
- html中验证密码中是包含字母,在JavaScript中确认密码验证
- linux rm 不释放_linux删除文件空间不释放问题解决
- MyBatis自定义类型处理器 TypeHandler
- Bulk批量操作API的介绍
- android检查可用网络的代码
- Maven项目设置仓库下载位置
- 全网沸腾!鸿蒙手机要来了
- WEB前端常用JavaScript代码整理(二)
- Python 崛起、JavaScript 制霸 —— GitHub 2017 年度开源报告里的语言之争
- 如何通过Chrome中的代码设置JavaScript断点?
- react native webview 不能滑动页面
- 广度优先搜索 解决九宫格问题
- 蓝色——网页效果图设计之色彩索引
- iOS--相册视频MOV转MP4
- android应用程序耗电,Android的十大耗电量应用程序,在软件中排名第一
- 股东转让股权后是否还应承担出资义务
- SVN操作提示被锁定-清理命令Clean up
热门文章
- sift算法_单应性Homograph估计:从传统算法到深度学习
- Android开发:5-3、Menu、Dialog、Fragment
- (王道408考研操作系统)第三章内存管理-第一节4:连续分配管理方式(单一连续、固定分区和动态分区分配)
- 二叉树最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
- unix-privesc-check提权漏洞快速检测工具
- Linux远程拷贝scp命令
- ssh远程连接(ubuntu、windows)
- jpa-spring -basic
- Jenkins关联GitHub进行构建
- 170802、Elasticsearch5.2.2 安装问题记录