一、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 -p123456mysql> 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=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkaban_testmysql.user=rootmysql.password=123456mysql.numconnections=100# Azkaban Jetty server properties.jetty.maxThreads=25jetty.ssl.port=8443jetty.port=8081jetty.keystore=keystorejetty.password=123456jetty.keypassword=123456jetty.truststore=keystorejetty.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=mysqlmysql.port=3306mysql.host=localhostmysql.database=azkaban_testmysql.user=rootmysql.password=123456mysql.numconnections=100

7、启动服务器

Web服务

[root@hop01 bin]# pwd/opt/azkaban/server/bin[root@hop01 bin]# lltotal 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=commandcommand=echo 'mySimpleJob'

打成zip包

[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job

创建项目

上传任务包

执行任务

2、任务顺序执行

创建任务A

[root@hop01 flow_02]# vim simpleA.jobtype=commandcommand=echo 'simplejobA'

创建任务B

[root@hop01 flow_02]# vim simpleB.jobtype=commanddependencies=simpleAcommand=echo 'simplejobB'

打包任务

[root@hop01 flow_02]# zip -q -r simpleTwoJob.zip simpleA.job simpleB.job

同样的操作方式,两个任务放在zip包中,通过Web服务上传,观察执行效果即可。

四、源代码地址

GitHub·地址https://github.com/cicadasmile/big-data-parentGitEE·地址https://gitee.com/cicadasmile/big-data-parent

阅读标签

【Java基础】【设计模式】【结构与算法】【Linux系统】【数据库】

【分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot基础】

【数据分析】【技术导图】【 职场】

©著作权归作者所有:来自51CTO博客作者知了一笑的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. Django链接mysql数据库
  2. 01-开发工具安装配置与HTML文档结构
  3. shell脚本语句语法使用(超详细)
  4. 用PowerShell通过Posh-SSH免密码自动登录Linux并执行命令
  5. 日志采集分析实例
  6. 基于CentOS7.x 使用Autofs_配置自动挂载NFS服务
  7. Ubuntu系统网络配置及shell脚本编程之函数数组等用法详解
  8. try catch fianlly执行顺序
  9. 借助NOR Flash实现UltraScale FPGA后配置解决方案

随机推荐

  1. android 开发积累
  2. android实现上下滑动
  3. Android 拦截 HOME 按键
  4. android双击返回键退出程序
  5. Android使用SQLiteDatabase直接存取数据
  6. Android深入浅出之Audio第三部分Audio Po
  7. Android全屏设置的两种方式
  8. android按键灯流程分析
  9. http://dl-ssl.google.com/android上不去
  10. Fragment总结