文档章节

Azkaban的定时调度任务分析34:定时执行下文

强子哥哥
 强子哥哥
发布于 2016/04/12 15:52
字数 323
阅读 239
收藏 0
点赞 1
评论 0

下面说线程azkaban.trigger.TriggerManager.TriggerScannerThread是如何运作的

1)初始化

stop in azkaban.trigger.TriggerManager$TriggerScannerThread.xxx

run

初始化的上下文是:

java.lang.Exception

at azkaban.trigger.TriggerManager$TriggerScannerThread.xxx(TriggerManager.java:187)

at azkaban.trigger.TriggerManager$TriggerScannerThread.<init>(Trigg

Step completed: erManager.java:191)

at azkaban.trigger.TriggerManager.<init"thread=main", azkaban.trigger.TriggerManager$TriggerScannerThread.xxx(), line=188 bci=10

>(Tri188    }


ggerManager.java:67)

at azkaban.wemain[1] bapp.AzkabanWebServer.loadTriggerManager(AzkabanWebServer.java:275)

at azkaban.webapp.AzkabanWebServer.<init>(AzkabanWebServer.java:199)

at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:723)

=======================================================================================

2)线程的具体运行

stop in azkaban.trigger.TriggerManager$TriggerScannerThread.run


stop in azkaban.trigger.TriggerManager$TriggerScannerThread.checkAllTriggers


stop in azkaban.trigger.TriggerManager$TriggerScannerThread.onTriggerTrigger


---另外要注意:

long scannerInterval = props.getLong("trigger.scan.interval", DEFAULT_SCANNER_INTERVAL_MS);

runnerThread = new TriggerScannerThread(scannerInterval);

设置了查看周期,默认值竟然是

public static final long DEFAULT_SCANNER_INTERVAL_MS = 60000;

竟然有1分钟。。。

果然修改此值


然后继续研究,发现

private void onTriggerTrigger(Trigger t) throws TriggerManagerException {

 

List<TriggerAction> actions = t.getTriggerActions();

for (TriggerAction action : actions) {

try {

logger.info("Doing trigger actions");

System.out.println("action*************************************:" + action);

action.doAction();//重点来了!!!

} catch (Exception e) {

logger.error("Failed to do action " + action.getDescription(), e);

} catch (Throwable th) {

logger.error("Failed to do action " + action.getDescription(), th);

}

}

if (t.isResetOnTrigger()) {

t.resetTriggerConditions();

t.resetExpireCondition();

} else {

t.setStatus(TriggerStatus.EXPIRED);

}

try {

triggerLoader.updateTrigger(t);

} catch (TriggerLoaderException e) {

throw new TriggerManagerException(e);

}

}

如果屏蔽这行,exec就不会执行任务!

action的代码是azkaban.trigger.builtin.ExecuteFlowAction

============================================================

通过这里加代码观察

然后观察打印出来的日志:

正好验证了我的想法!因为我的任务也是6秒为周期!

==================================================================================

stop in azkaban.trigger.builtin.ExecuteFlowAction.doAction

run

==================================================================================

总结:定时把一个任务放入到web的一个queue中,而一次性任务则是放置1次!

© 著作权归作者所有

共有 人打赏支持
强子哥哥

强子哥哥

粉丝 859
博文 551
码字总数 640910
作品 8
南京
架构师
Azkaban的定时调度任务分析33:定时执行上文

之前,我们研究了执行1次的任务,但是实际生产环境中,我们可能需要很多个定时调度的需求, 所以,接下来,我们来研究定时调度的原理! ==================================================...

强子哥哥
2016/04/12
180
0
强子哥哥/MyAzkaban

#MyAzkaban Azkaban是由Linkedin开源的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。 Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一...

强子哥哥
2016/04/15
0
0
我的第2个开源项目:MyAzkaban-3.0.0

网址: http://git.oschina.net/qiangzigege/MyAzkaban http://azkaban.github.io/azkaban/docs/latest 官方例子: https://github.com/joeharris76/azkabanexamples 为什么要做这个东西? ......

强子哥哥
2016/04/14
888
0
#研发解决方案#分布式并行计算调度和管理系统Summoner

郑昀 创建于2015/11/10 最后更新于2015/11/12 关键词:佣金计算、定时任务、数据抽取、数据清洗、数据计算、Java、Redis、MySQL、Zookeeper、azkaban2、oozie、mesos Summoner 是国玺部门推出...

旁观者-郑昀
2016/01/08
144
0
批量工作流任务调度器--MyAzkaban

azkaban是由Linkedin开源的一个批量工作流任务调度器,在研究3.0.0版本的过程中,发现有一些问题:比如 定时调度参数下拉框中秒选项默认不显示、根据工作类型生成实例时有bug。所以创建此项目...

强子哥哥
2016/04/15
925
2
hadoop工作流引擎azkaban

介绍 Azkaban是twitter出的一个任务调度系统,操作比Oozie要简单很多而且非常直观,提供的功能比较简单。Azkaban以Flow为执行单元进行定时调度,Flow就是预定义好的由一个或多个可存在依赖关...

wayhk
2016/05/13
104
0
1、azkaban介绍

azkaban是一个定时的任务调度器,任务之间有依赖关系,只需要将任务打包成zip包,上传上去就可以了。

刘付kin
2016/12/01
125
0
spring定时任务

spring定时任务 spring提供了异步执行和任务调度的功能,可以简化程序员的工作。这两种功能在spring中是放在一起讲的,很容易看晕,网上的文章也很少有分开讲的,在这里只讲任务调度也就是定...

肥肥小浣熊
2017/11/15
0
0
定时任务发展史(二)

第一代定时任务系统上线用了大概半年之后,就被我们厌倦了。于是就规划了第二代定时任务系统。 第二代定时任务系统 第二代调度系统主要解决的是,避免每次修改定时任务的执行时间都需要重新启...

ityouknow
2017/07/07
0
0
java定时调度器解决方案分类及特性介绍

什么是定时调度器? 我们知道程序的运行要么是由事件触发的,而这种事件的触发源头往往是用户通过ui交互操作层层传递过来的;但是我们知道还有另外一种由机器系统时间触发的程序运行场景。大...

杨武兵
2016/02/26
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring boot中swagger2使用

1.pom.xml中添加 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>......

说回答
3分钟前
0
0
tomcat虚拟路径的几种配置方法

tomcat虚拟路径的几种配置方法 一般我们都是直接引用webapps下面的web项目,如果我们要部署一个在其它地方的WEB项目,这就要在TOMCAT中设置虚拟路径了,Tomcat的加载web顺序是先加载 $Tomcat_ho...

Helios51
16分钟前
1
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
21分钟前
0
0
导航守卫解释与例子

“导航”表示路由正在发生改变。 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住...

tianyawhl
21分钟前
0
0
Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
35分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
37分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
44分钟前
1
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
48分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
54分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部