Jstorm提交任务的流程

今天结合JStorm官方Demo,进一步研磨学习了JStorm提交任务到分配任务的过程,下面是自己的一些认识与理解。

Topology是JStorm对有向无环图的抽象,其内部封装了数据源spout和数据处理对象bolt,以及spout和bolt、bolt和bolt之间的关系。

1) Demo中SequenceTopology对象的SetBuilder(TopologyBuilder builder, Map conf)方法根据用户提交到JStorm集群的配置文件,使用TopologyBuilder方法构造Topology的spout和bolt,以及spout和bolt之间的关系,Demo中主要是SequenceSpout、MergerRecord、SplitRecord、PairCount、TotalCount之间的订阅关系。

2) TopologyBuilder构造好Topology之后,通过Jstorm Client的StormSubmitter.submitTopology(streamName, conf,builder.createTopology())提交Topology到Jstorm集群。

3) 提交成功后,NimbusServer通过ServiceHandler.submitTopologyWithOpts(String topologyname, String uploadedJarLocation, String jsonConf, StormTopology topology, SubmitOptions options)方法处理接收到的topology,并在该方法中实例化一个TopologyAssignEvent,相当于创建了一个topology作业,然后将其保存到TopologyAssign的任务队列中。

4) TopologyAssign是Jstorm的一个任务分配器,它会根据配置和Topology中spout和bolt以及bolt相互之间的关系来进行Task的创建和分配,但是具体任务的创建和分配并非TopologyAssign自身完成的,而是调用Jstorm的调度器完成的, Jstorm允许用户根据自己的业务需求自定义调度器。该类是一个实现了Runnable接口的后台线程,随着Nimbus启动,主要完成topology作业分配、备份和作业均衡的作用,它的run方法采用阻塞的方式获取自身作业队列中的作业,然后进行作业分配。

5) NimbusServer将任务分配好后,并且创建到ZK上,此时就需要supervisor认领自己的任务了,supervisor获取任务的具体逻辑封装在SyncSupervisorEvent中,其也是一个后台线程,会不停获取ZK上(JSTORM_ROOT/assignments下)的任务,然后把自己的任务保存到本地磁盘上,再通过NimbusClient把topology的代码保存到本地,然后启动worker线程来执行任务,Demo中主要是执行一些拆分(split)和统计(count)作业。

6) SyncSupervisorEvent将自己的作业选出来,并保存到本地之后,再由SyncProcessEvent来启动worker执行具体的作业,SyncProcessEvent主要干两件事,启动新的worker,杀死无用的worker。当然,执行结果还要通过Ack机制向被订阅者返回,以保证task被成功执行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 06:20:07

Jstorm提交任务的流程的相关文章

流式计算-Jstorm提交Topology过程(下)

紧接上篇流式计算-Jstorm提交Topology过程(上), 5.上篇任务已经ServiceHandler.submitTopologyWithOpts()方法,在该方法中,会实例化一个TopologyAssignEvent,相当于创建了一个topology级别的作业,然后将其保存到TopologyAssign的任务队列中,具体代码如下: TopologyAssignEvent assignEvent = new TopologyAssignEvent(); assignEvent.setTo

流式计算-Jstorm提交Topology过程

Topology是Jstorm对有向无环图的抽象,内部封装了数据来源spout和数据处理单元bolt,以及spout和bolt.bolt和bolt之间的关系,它可以被提交到Jstorm集群. 本文以Jstorm自带的SequenceTopology简单介绍一下Jstorm提交topology的过程,本文主要介绍提交过程,不涉及具体业务, 1. SequenceTopology核心方法com.alipay.dw.jstorm.example.sequence.SequenceTopology.Se

iOS APP提交上架最新流程

一.证书的导出      1.1 前期工作        首先你需要有一个苹果的开发者帐号,一个Mac系统.        如果没有帐号可以在打开http://developer.apple.com/申请加入苹果的开发者计划.怎么申请网上有详细的介绍,因为我没有实际申请过,所以在此不多做介绍.        如果你已经有了一个IDP,打开https://developer.apple.com/并登录到苹果MemberCenter,登录以后可以看到下面这个界面,列出了你开发需要的一些工具,支持,i

iOS版本更新的App提交审核发布流程

http://www.2cto.com/kf/201502/378698.html 版本更新的App和新App的发布提交流程略有不同,新的App需要在开发者账号里准备发布证书,添加App的id,关联描述文件等等,这些可以不会的可以百度.在这里只说这些证书都有的情况下的版本更新App的发布过程: 1.首先保证你的电脑上面已经有了开发者账号上面的证书和描述文件,如果没有下载证书和关联文件,但是这个时候有了第一个坑,你的App可能之前是在公司其他工程师的电脑上发布的,或者是外包公司做的,这个时候你从开

iOS APP提交上架最新流程(转)

时隔1年又让我鼓捣iOS,刚接手就是上架,经验值为0的我,虽然内心是拒绝的,但还是要接受这项任务滴!也就是在被拒后重新审核,再改在提交...这样 反复的过程中也对上架流程熟悉了好多,写篇帖子送给同为菜鸟的你,如果里面有很菜的东西,大牛请自动忽略,毕竟这也是还为菜鸟的我的备忘录呢!    一.证书的导出      1.1 前期工作        首先你需要有一个苹果的开发者帐号,一个Mac系统.        如果没有帐号可以在打开http://developer.apple.com/申请加入苹果

app提交版本更新的流程

版本更新的App和新App的发布提交流程略有不同.新的App需要在开发者账号里准备发布证书即 Certificates->iOS  Distribution,添加App的id即Identifiers->App IDs,关联描述文件即 Provisioning Profiles等等. 1.由于App是在公司其他工程师的电脑上发布的,这个时候从开发者账号上下载的证书和描述文件是不正确的, 因为少了什么p12钥匙之类的东西. 2.在确保有个账号的发布证书和描述文件之后,接下来就是和你的工程相关联.首

JStorm之NimbusServer启动流程

NimbusServer相当于hadoop里的JobTracker或yarn里的ResourceManager,在集群中属于首脑地位,负责分发任务,监控集群状态,与supervisor的通信主要通过Zookeeper.nimbus在启动过程中会做以下工作,以保证集群稳定运行: 1.清理无效topology 2.建立zk连接并创建相应znode 3.启动监控线程 4.启动httpserver 启动主函数如下: public static void main(String[] args) throw

ios经验6:提交APP上架流程

摘要: 由于苹果的机制,在非越狱机器上安装应用必须通过官方的App Store,开发者开发好应用后上传App Store,也需要通过审核等环节.AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传App Store作了支持.本文从三个流程来介绍如何实现AppCan在线编译出ipa包,以及上传到苹果App Store. 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://developer.apple.com/申请加入

App提交Appstore审核流程

原文: https://www.douban.com/note/461351420/ 这是一个app提交到iTunces Connect被拒了4次摸索出来的经验,说多了都是泪,先让我擦擦...好了,话不多说,为了让中国的app不再那么容易被拒,或者被拒了不知道该咋办,我把我的小经验在这里分享给大家. 给大家的忠告:苹果的审核真的非常非常非常严格,他们的想法和做法和中国真的差别很大,他们爱较真,所以,千万千万不要懈怠. 1.在上传app之前,把苹果的审核指南<App Store Review Gu