Storm Topology Parallelism

Understanding the Parallelism of a Storm Topology


What makes a running topology: worker processes, executors and tasks

在一个Strom集群中,实际运行一个topology有三个主要的实体

  1. Worker processes
  2. Executors (threads)
  3. Tasks

下面是一张草图简单说明他们之间的关系:

worker process executes a subset of a topology.

一个worker进程属于一个特定的topology并且可能运行一个或者多个executors

一个运行中的topology由运行在集群中的许多机器上的这样的进程组成

一个executor是被一个worker进程启动的一个线程。它可能运行一个或多个任务。

一个task执行实际的数据处理——在你的代码中实现的每一个spout或bolt执行许多任务。一个组件的任务数量总是不变的,这是自始至终贯穿整个topology的,但是一个组件的executors(threads)的数量是可以随时改变的。也就是说,下面这个表达式总是true:#threads ≤ #tasks。默认情况下,task的数量和executor的数量是相等的,也就是说每个线程运行一个任务。

Configuring the parallelism of a topology

注意,Storm中的术语"parallelism"也被叫做parallelism hint,表示一个组件初始的executor(threads)数量。

在这篇文档中我们将用"parallelism"来描述怎样配置executor的数量,怎样配置worker进程的数量,以及task的数量。

配置的方式有多种,它们之间的优先级顺序为:defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration

下面是一个例子

上面这段代码片段配置了一个叫green-bolt的Bolt,初始数量为2个executors并且关联4个task。也就是说,每个executor量运行2个task。

如果你没有明确配置task的数量,那么Strom将用默认的配置来运行,即:每个executor运行一个task。

Example of a running topology

下面这幅插图显示了一个简单的topology。这个topology由三个组件组成:一个叫"BlueSpout"的spout和两个bolt,分别叫"GreenBolt"和"YellowBolt"。

代码如下

How to change the parallelism of a running topology

补充一个Java API

参考  http://storm.apache.org/releases/1.1.1/Understanding-the-parallelism-of-a-Storm-topology.html

原文地址:https://www.cnblogs.com/cjsblog/p/8407078.html

时间: 2024-11-05 23:24:06

Storm Topology Parallelism的相关文章

第一个非常简单的storm topology的提交运行

配置好storm之后就可以开始在eclipse里面写topology了. 下面是我在网上搜到的一个简单的例子,我按照自己的理解注释了一下. 第一步,创建mvn工程 这是pom.xml文件 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http

Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout

1:初次运行Strom程序出现如下所示的错误,贴一下,方便脑补,也希望帮助到看到的小伙伴: 错误如下所示,主要问题是刚开始使用maven获取jar包的时候需要写<scope>provided</scope>,运行的时候需要把这行注释了即可,这是作用域的问题,开始需要在本地下载jar包,但是在虚拟机运行的时候已经存在这些jar包了,所以再写这句话就冲突了: 1 java.lang.NoClassDefFoundError: backtype/storm/topology/IRichS

Storm系列之一——Storm Topology并发

1.是什么构成一个可运行的topology? worker processes(worker进程),executors(线程)和tasks. 一台Storm集群里面的机器可能运行一个或多个worker进程,一个worker进程运行一个特定topology的executors. 一个worker进程可能运行一个或多个executors.每个executor是一个线程.一个executor运行同一个spout或者bolt的一个或多个task. 一个task完成具体的数据处理. 一个worker进程执

Storm Topology 提交到集群

问题:当完成Topology各个组件的定义之后(写好了**Spout.java 和 **Bolt.java)如何将Topology提交到集群中去? 参考:http://www.cnblogs.com/fxjwind/archive/2013/06/05/3119056.html 1,在**Topology.java中的main方法 setSpout.setBolt 之后通过TopologyBuilder.createTopology()创建Topology对象,在**Topology的main方

Storm Topology及分组整理

Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来,可是的接收方是独立运行的. 2.在消息传输层保证消息最多只能发送一次,Storm系统有ACK机制,是的没有被发送成功的消息会被重发,若消息层面也重发,会导致消息发送多次. 这种消息机制由两个接口来定义,backtype.storm.messaging.IContext和backtype.storm.

Storm杂谈之Topology的启动过程(一)

topology的提交 大家都知道,要提交Storm Topology 到Cluster,需要运行如下命令: ${STORM_HOME}/bin/storm jar xxxxxxxxxxx.jar ${main class} [args ...] bin目录下storm是一个Python文件,我们可以看一下Python脚本的main方法 def main(): if len(sys.argv) <= 1: print_usage() sys.exit(-1) global CONFIG_OPTS

Storm的一些通用的Topology的模式

原文地址:http://storm.apache.org/documentation/Common-patterns.html 此文档有许明明的翻译:http://xumingming.sinaapp.com/189/twitter-storm-storm%E7%9A%84%E4%B8%80%E4%BA%9B%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F/ 但最新的文档略有更新,所以这里重新进行整理: 本文列举了Storm Topology的一些通用的模式: 流式聚合

Storm基本概念以及Topology的并发度

Spouts,流的源头 Spout是Storm里面特有的名词,Stream的源头,通常是从外部数据源读取tuples,并emit到topology Spout可以同时emit多个tupic stream,通过OutputFieldsDeclarer中的declareStream,method来定义 Spout需要实现RichSpout端口,最重要的方法是nextTuple,storm会不断调用接口从spout中取数据,同时需要注意的是Spout分为reliable or unreliable两种

Storm入门教程 第二章 构建Topology[转]

2.1 Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability Tasks Workers Configuration Storm集群和Hadoop集群表面上看很类似.但是Hadoop上运行的是MapReduce jobs,而在Storm上运行的是拓扑(topology),这两者之间是非常不一样的.一个关键的区别是: 一个MapReduce job最终会结束,