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

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

相关文章推荐

Understanding the Parallelism of a Storm Topology

In the past few days I have been test-driving Twitter’sStorm project, which is a distributed real-ti...

storm的并发

一个运行中的拓扑是由什么组成的:worker进程,executors和tasks。 Storm是按照下面3种主要的部分来区分Storm集群中一个实际运行的拓扑的: Worker进程Exec...

Storm_关停supervisor 以及 worker 进程, 利用kill

今天博主遇到了一个问题: 需要关闭supervisor 以及 worker 节点。 storm 貌似没有提供 关闭 supervisor 节点的指令:                  这里我...

Storm的事务总结

我们利用前面所说的Storm可靠性机制,可以很容易的提供至少一次的处理(at least once processing):也就是在一个tuple超时或者fail的时候,Storm会调用Spout的f...

Storm的并行度详解

文章来源:http://www.bubuko.com/infodetail-822074.html Storm的并行度详解 Storm的并行度是非常重要的,通过提高并行度可以提...

操作系统之进程和线程--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
  • 下载

Linux系统中 任务、进程和线程总结

任务、进程和线程基本概念 多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。Linux 就是一个支持多任务的操作系统(Windows也是多任务操作系统),比起...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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