Storm集群中执行的各种组件及其并行
一、Storm中执行的组件
- Nodes(machines):集群中的节点,就是这些节点一起工作来执行Topology。
- Workers(JVMs):一个worker就是一个独立的JVM进程。每一个节点都能够通过配置执行一个或多个workers,一个Topology能够指定由多少个workers来执行。
- Executors(threads):一个worker JVM中执行的线程。一个worker进程能够执行一个或多个executor线程。一个Executor能够执行多个tasks,Storm默认一个每一个executor分配一个task。
- Tasks(bolt/spout实例):Tasks就是spouts和bolts的实例,它详细是被executor线程处理的。

二、Storm中的并行(以WordCountTopology为例)
2.1 为Topology添加workers
- 描写叙述:在集群中为topology创建多少个工作进程
- 配置选项: TOPOLOGY_WORKERS
- 在代码中配置:
config.setNumWorkers(2);
注意:在LocalMode下无论设置几个workers,终于都仅仅有一个worker JVM进程。
2.2 配置executors和tasks
2.2.1 设置executor(thread)数量
- 描写叙述:每一个组件产生多少个Executor
- 配置选项:?
- 在代码中配置:
- TopologyBuilder#setSpout()
- TopologyBuilder#setBolt()
- Note that as of Storm 0.8 the
parallelism_hintparameter now specifies the initial number of executors (not tasks!) for that bolt.
2.2.2 设置task的数量
- 描写叙述:每一个组件创建多少个task
- 配置选项: TOPOLOGY_TASKS
- 在代码中配置:
).fieldsGrouping(SPLIT_BOLT_ID, newFields("word"));
假设一開始分配2个workers,则Topology的执行情况例如以下图所看到的:
三、一个topology的样例
topologyBuilder.setSpout(“blue-spout”, new BlueSpout(), 2); // set parallelism hint to 2
topologyBuilder.setBolt(“green-bolt”, new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping(“blue-spout”);
topologyBuilder.setBolt(“yellow-bolt”, new YellowBolt(), 6) .shuffleGrouping(“green-bolt”);
- TOPOLOGY_MAX_TASK_PARALLELISM: 这个參数能够控制一个组件上Executor的最大数量。它通经常使用来在本地模式測试topology的最大线程数量。当然我们也能够在代码中设置: Config#setMaxTaskParallelism().
四、怎样改变一个执行topology中的Parallelism
- 通过Storm web UI来均衡
- 通过CLI tool storm 来均衡
# Reconfigure the topology “mytopology” to use 5 worker processes, # the spout “blue-spout” to use 3 executors and # the bolt “yellow-bolt” to use 10 executors.
Storm集群中执行的各种组件及其并行的更多相关文章
- Storm官方文档翻译之在生产环境集群中运行Topology
在进群生产环境下运行Topology和在本地模式下运行非常相似.下面是步骤: 1.定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建) 2.使用StormSub ...
- Storm集群组件和编程模型
Storm工作原理: Storm是一个开源的分布式实时计算系统,常被称为流式计算框架.什么是流式计算呢?通俗来讲,流式计算顾名思义:数据流源源不断的来,一边来,一边计算结果,再进入下一个流. 比 ...
- Storm集群安装部署步骤【详细版】
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how ...
- Storm集群安装详解
storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器 ...
- Storm入门教程 第三章Storm集群安装部署步骤、storm开发环境
一. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...
- Storm集群安装部署步骤
本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Sto ...
- storm集群架构
一.storm何许人也? Storm 是Twitter的一个开源框架.Storm一个分布式的.容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0. ...
- Storm 集群
Apache Storm Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存 ...
- storm集群相关资料
1. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...
随机推荐
- 详解js和jquery里的this关键字
详解js和jquery里的this关键字 js中的this 我们要记住:this永远指向函数运行时所在的对象!而不是函数被创建时所在的对象.this对象是在运行时基于函数的执行环境绑定的,在全局环境中 ...
- 用jQuery实现鼠标在table上移动进行样式变化
1.定义样式 <style type="text/css"> .striped { background-color:red; ...
- tcp接收xml数据解析
避免tcp接收xml数据时加上xml数据长度,根据xml数据特点来解析recv到的xml数据 int nPos1 = 0; int nPos2 = 0; int nTempPos = 0; int n ...
- delphi与汇编
我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式 ...
- perl 继承小例子
<pre name="code" class="html"><pre name="code" class="ht ...
- 【Nginx笔记】nginx配置文件具体解释
本文主要对nginx的配置做重点说明,关于nginx的其他基本概念.建议參考官网描写叙述.这里推荐Nginx Beginner's Guide这篇文档.对刚開始学习的人高速认识nginx非常有帮助. ...
- Python 学习入门(22)—— 线程同步
Python主要通过标准库中的threading包来实现多线程.在当今网络时代,每个服务器都会接收到大量的请求.服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率.Python是一种 ...
- 一些窗口API函数,比如SetForegroundWindow,SwitchToThisWindow
SetForegroundWindowSwitchToThisWindow procedure TApplication.BringToFront;varTopWindow: HWnd;beginif ...
- swift_将UIDatePicker到达的传播之间的时间差在数小时出现页面的事
今天,写swift demo当它来到了一个非常精彩的问题,我再次 present 使用页面出来 UIDatePicker 选择时间,然后再回到原来的主界面的时间,结果出现的问题:B页面的正常时间,传回 ...
- alv行可编辑时带出描述
ALV显示可以编辑的状态下可以带出描述信息等,比如维护表程序输入公司代码时需要带出公司代码的描述,这时就需要通过下面事件来触发 定义一个类: CLASS lcl_event_receiver DEFI ...