文档章节

Azkaban的Exec Server分析 27:Execute Server接收任务的过程分析

强子1985
 强子1985
发布于 2016/04/11 13:41
字数 291
阅读 267
收藏 0

之前,我们说过,web server分发任务,是通过如下的URL来的

uri = "http://x.x.x.x:port/executor?action=execute&execid=12&user"

// 构造URI

URI uri = ExecutorApiClient.buildUri(hostportpathtrueparamList.toArray(new Pair[0])); 

return apiclient.httpGet(urinull);

也就是说,web server发出这样的GET请求给execute server,那么下面就来分析execute server是如何处理这个连接的!

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

root.addServlet(new ServletHolder(new ExecutorServlet()), "/executor");

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

jdb azkaban.execapp.AzkabanExecutorServer  -conf  /root/azkb/azkaban_3.0.0_debug/conf

stop in azkaban.execapp.ExecutorServlet.init

stop in azkaban.execapp.ExecutorServlet.doGet

stop in azkaban.execapp.FlowRunnerManager.submitFlow

run

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

private void handleAjaxExecute(HttpServletRequest req, Map<String, Object> respMap, int execId)

throws ServletException {

// 看到这里了

try {

// 交给本地的manager来处理

flowRunnerManager.submitFlow(execId);

} catch (ExecutorManagerException e) {

e.printStackTrace();

logger.error(e);

respMap.put(RESPONSE_ERROR, e.getMessage());

}

}


先从数据库中执行如下语句:

private static String FETCH_EXECUTABLE_FLOW = "SELECT exec_id, enc_type, flow_data FROM execution_flows "

+ "WHERE exec_id=?";

查处flowData后,-》取出projectId,+Version.

然后以此去查ProjectVersions得到数据

再去project_files拿下数据。

其实你知道是拿下了你上传的压缩包就行了,然后解压缩到本地的projects文件夹中!

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

这期间会创建一个软连接

ln -s /root/azkb/azkaban_3.0.0_debug/projects/9.15/* .;

实际效果如下:

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

Future<?> future = executorService.submit(runner);

 

提交任务入执行线程池!


© 著作权归作者所有

共有 人打赏支持
强子1985

强子1985

粉丝 862
博文 947
码字总数 649991
作品 8
南京
架构师
Azkaban 任务调度系统(安装搭建)

无论是在业务开发还是在大数据开发中,脚本都是必不可少的存在,在初期我们会使用crontab来解决问题,那么当发现规模变大监控需求可视化需求的到来Crontab已经显然满足不了需求,抱着一颗解决大数...

喵了_个咪
07/26
0
0
Azkaban的Exec Server分析 28:Execute Server的任务真正执行过程

上节,我们看到了任务放在executor的一个线程池里,下面开始分析真正的执行过程! ================================================================================ jdb azkaban.execapp...

强子哥哥
2016/04/11
287
0
hadoop工作流引擎azkaban

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

wayhk
2016/05/13
104
0
Azkaban-2.5及Plugins的安装配置

Azkaban是由LinkedIn开发的调度工具,可以用于调度Hadoop中的相互依赖的Job。有时候,在Hadoop集群中运行的Job是相互依赖的,某些任务需要顺序的执行,这种场景下使用Azkaban能够很好的解决问...

lulongzhou_llz
04/20
0
0
Azkaban的Exec Server分析 30:JobRunner如何构造一个Job大揭秘

重点来了,JobRunner对象是有了,下面就真的要生成一个Job了,如何生成?本节揭秘! =========================================================================================== String...

强子哥哥
2016/04/11
341
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
17分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
22分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
22分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
29分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部