一、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协调时序任务执行相关推荐

  1. 大数据调度系统为什么选型Apache DolphinScheduler ?

    table of contents 一 .背景 二 .定位 三 .案例 四 .竟品对比 五 .DolphinScheduler简介 六 .社区发展 七.性能数据参考 一 .背景 今天跟客户聊天的时候, ...

  2. 数据搬运组件:基于Sqoop管理数据导入和导出

    一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.oracle等)间进行数据的传递. 通常数据搬运 ...

  3. 土地利用结构信息熵_科研成果快报第163期:基于市政用水时序数据的城市混合土地利用感知与分析...

    基于市政用水时序数据的城市混合土地利用感知与分析 Sensing Mixed Urban Land-Use Patterns Using Municipal Water Consumption Tim ...

  4. 如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断

    如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断 背景 架构拓扑图 实现方式对比 UDF方案 优点: 缺点: 改写返回结果方案 优点: 缺点: 说明 实现 默认处理方式 redis报文解析 ...

  5. mysql ormlite_GitHub - loogn/Loogn.OrmLite: Loogn.OrmLite是一个简单、高效的基于.NET的数据访问组件!...

    简要 Loogn.OrmLite是一个超简单.超高效.超灵活的基于.net standard 2.0的数据访问组件! 特点 支持sqlserver.mysql.sqlite3数据库: 通过扩展方法扩展 ...

  6. Apache DolphinScheduler——开源大数据调度器神器

    目 录 1. 简 介 1.1 概 念 1.2 优缺点 1.3 哪些人适合DolphinScheduler(纯属个人观点) 1.4 社区 2. 集群模式安装详解(比官网还细,个人手把手实践避坑) 2.1 ...

  7. 壮实学数据技术05:数据调度

    赵壮实/ 一个数据人的自留地 哈喽,大家好,我是怪力少女赵壮实. 很高兴和大家又一次相聚在周六的早上-在上节<壮实学数据技术04:ETL>中,我们讨论了数仓开发,今天我们衔接一下,讲讲数据 ...

  8. 荔枝机器学习平台与大数据调度系统“双剑合璧”,打造未来数据处理新模式!...

    点击上方 蓝字关注我们 ✎ 编 者 按 在线音频行业在中国仍是蓝海一片.根据 CIC 数据显示,中国在线音频行业市场规模由 2016 年的 16 亿元增长至 2020 年的 131 亿元,复合年增长率 ...

  9. 大数据任务调度和数据同步组件初探

    本文个人博客地址 本文公众号地址 背景 数据从最原始的状态,可能是一个 excel,一个文本,或者是来自业务数据库的数据,格式各种各样,落地到数据仓库.数据湖中,数据的同步过程 是必不可少的 图片来源 ...

最新文章

  1. 编译工具 之 ant
  2. linux平台学x86汇编语言学习集合帖
  3. python列表多重赋值
  4. html中验证密码中是包含字母,在JavaScript中确认密码验证
  5. linux rm 不释放_linux删除文件空间不释放问题解决
  6. MyBatis自定义类型处理器 TypeHandler
  7. Bulk批量操作API的介绍
  8. android检查可用网络的代码
  9. Maven项目设置仓库下载位置
  10. 全网沸腾!鸿蒙手机要来了
  11. WEB前端常用JavaScript代码整理(二)
  12. Python 崛起、JavaScript 制霸 —— GitHub 2017 年度开源报告里的语言之争
  13. 如何通过Chrome中的代码设置JavaScript断点?
  14. react native webview 不能滑动页面
  15. 广度优先搜索 解决九宫格问题
  16. 蓝色——网页效果图设计之色彩索引
  17. iOS--相册视频MOV转MP4
  18. android应用程序耗电,Android的十大耗电量应用程序,在软件中排名第一
  19. 股东转让股权后是否还应承担出资义务
  20. SVN操作提示被锁定-清理命令Clean up

热门文章

  1. sift算法_单应性Homograph估计:从传统算法到深度学习
  2. Android开发:5-3、Menu、Dialog、Fragment
  3. (王道408考研操作系统)第三章内存管理-第一节4:连续分配管理方式(单一连续、固定分区和动态分区分配)
  4. 二叉树最大深度:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
  5. unix-privesc-check提权漏洞快速检测工具
  6. Linux远程拷贝scp命令
  7. ssh远程连接(ubuntu、windows)
  8. jpa-spring -basic
  9. Jenkins关联GitHub进行构建
  10. 170802、Elasticsearch5.2.2 安装问题记录