Storm中进程,线程,任务和实例的关系
2015-07-07 14:44
387 查看
以一个具体的例子来阐述“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
假设现在有一个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
相关文章推荐
- ubuntu make[1]: Warning: File `scripts/Makefile.host' has modification time 3.4e+08 s in the future
- Ganglia监控Hadoop集群的安装部署
- 【JavaWeb】(5)JSP指令与动作元素
- tmux快捷键
- assign 的模板赋值
- H.264码率控制算法研究及JM相应代码分析(二)
- 对象方法和类方法的区别--引用
- MySQL存储过程存储过程(3) 存储过总结
- 欢迎使用CSDN-markdown编辑器[使用方法备忘]
- 创建交换分区swap增加Linux虚拟内存
- android调用照相机简单demo
- linux下svn常用指令
- 【selenium学习笔记】webdriver进行页面元素定位
- 欢迎使用CSDN-markdown编辑器[使用方法备忘] 分类: 杂项 2015-07-07 14:43 10人阅读 评论(0) 收藏
- MySQL存储过程(2)存储过程详解
- 《权威指南》笔记 -- 8.4 作为值的函数
- php for Linux之mysql扩展模块安装与配置
- What is the difference between Full load and Incremental load
- 七天学会ASP.NET MVC (四)――用户授权认证问题
- Go编程——变量、函数导出与首字母大写