Storm中进程,线程,任务和实例的关系

原创 2015年07月07日 14:44:31
以一个具体的例子来阐述“Storm中进程,线程,任务和实例的关系”


假设现在有一个Topology实例,在该Topology实例中,配置为整个Topology实例服务的进程数量为10,配置了Spout单元和Bolt单元以及Spout单元和Bolt单元之间的数据流,为这些Spout和Bolt单元服务的线程和任务数量分别为:Spout单元,10个线程,20个任务;Bolt单元,20个线程,20个任务。
那么一旦将该Topology实例提交给Nimbus,接下来就会由Nimbus控制运行。
在Nimbus的控制下,有些Supervisor会在所在的worker node上建立一个进程,整个Supervisor集群中共建立10个进程,这些进程都为该Topology实例服务。这些进程可以运行在多个worker node上,也可以运行在同一台worker node上。每个进程都持有对项目JAR包的引用。


现在一共需要30个线程来为Spout和Bolt单元服务,那么10个进程中,每个进程上运行3个线程。一个进程中的3个线程可以分别为不同的Spout单元和Bolt单元服务。每个线程都创建一份Spout单元或者Bolt单元的实例。


Spout单元共有10个线程,20个任务为其服务,那么每个线程上运行2个任务,同理为Bolt单元服务的20个线程中的每个线程上运行1个任务。


每个线程中的任务使用线程所持有的Spout实例或者Bolt实例,同一个线程中的多个任务间是串行执行的关系,因而在一个线程有多个任务的情况下,不会产生并发问题。


比如某个线程中持有一个Spout实例spoutInstance,配置该线程中需要运行5个任务,那么Storm的框架代码有可能是这么实现的:
for(int i=0;i<5;i++)
{
   spoutInstance.nextTuple();

}


参考文献:

[1]:http://blog.csdn.net/dslztx/article/details/46789443

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

Redis 三:redis.conf 配置详细解析

# redis 配置文件示例   # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k  => 1000 bytes...

redis3.2.8集群环境搭建

redis3.2.8集群环境搭建环境准备 centos6.7 redis3.2.8 安装步骤 第一步:下载redis3.2.8安装包https://redis.io/download 第二步: 解压压...

操作系统之进程和线程--uC/os-II实例--建立任务

1.建立任务,OSTaskCreate()  /  OSTaskCreateExt()Code: INT8U OSTaskCreate (void (*task)(void *pd), void...

进程和线程之间的关系

  • 2015年07月05日 17:59
  • 860B
  • 下载

多任务的优点 进程 线程

  • 2009年03月22日 19:50
  • 3.51MB
  • 下载

Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程

处理流程:   方法原型: (defn sync-processes [supervisor]) 函数说明: Supervisor是一个supervisor-data对象. ...

Storm线程进程分配方法

原文: http://rainforc.iteye.com/blog/2210596 运行中的Topology主要由以下三个组件组成的: Worker processes...

android 中 任务、进程和线程的区别

 任务、进程和线程     关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要关心进程、线程这样的概念。在Android中,组件的动态运行,有一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Storm中进程,线程,任务和实例的关系
举报原因:
原因补充:

(最多只允许输入30个字)