一个storm topology运行起来之后, 会在supervisor 机器上启动一些进程来运行spout和bolt实例.
如果一个topology里面一共有一个spout, 一个bolt。 其中spout的parallelism是2, bolt的parallelism是4, 那么我们可以把这个topology的总工作量看成是6, 那么一共有6个task,那么/tasks/{topology-id}下面一共会有6个以task-id命名的文件,其中两个文件的内容是spout的id, 其它四个文件的内容是bolt的id。
task->node+port, 它其实就是从task-id到supervisor-id+port的映射, 也就是把这个task分配给某台机器的某个端口来做。
topology里面的组件(spout/bolt)都根据parallelism被分成多个task, 而这些task被分配给supervisor的多个worker来执行。
task都会跟一个componment-id关联, componment是spout和bolt的一个统称.
对于每一个component在部署的时候都会指定使用的数量, 在storm-user中有一个
讨论说明了这个问题:
里面的大意是说, 通过设置parallelism来指定执行spout/bolt的线程数量. 而在配置中还有另外一个地方(backtype.storm.Config.setNumWorkers(int))来指定一个storm集群中执行topolgy的进程数量, 所有的线程将在这些指定的worker进程中运行. 比如说一个topology中要启动300个线程来运行spout/bolt, 而指定的worker进程数量是60个, 那么storm将会给每个worker分配5个线程来跑spout/bolt, 如果要对一个topology进行调优, 可以调整worker数量和spout/bolt的parallelism数量(调整参数之后要记得重新部署topology. 后续会为该操作提供一个swapping的功能来减小重新部署的时间).
对于worker和task之间的比例, nathan也给出了
参考, 即1个worker包含10~15个左右, 当然这个参考, 实际情况还是要根据配置和测试情况
参考:
http://xumingming.sinaapp.com/category/storm/
分享到:
相关推荐
mk-assignments 是 Storm 中的一个关键函数,负责计算出有多少 task,包括 Spout 和 Bolt 任务,并将其写入 Zookeeper,以便 Supervisor 感知到有新的任务需要认领。 五、Worker 进程中的线程种类及用途 Worker ...
3. **消息传递机制**:Storm通过Tuple来表示数据流中的单个元素,Tuple在Spout和Bolt之间传递。消息传递机制确保了数据流的可靠性和有序性。 4. **任务调度算法**:Storm采用了基于资源利用率的任务调度策略,能够...
4. **Executor**:Executor 是由 Worker 启动的一个 Java 线程,负责执行 Bolt 或 Spout 中的 Task。 5. **Task**:最小的工作单元,通常每个 Executor 包含一个或多个 Task。Task 实际上执行了用户自定义的逻辑。 ...
Storm的拓扑结构(Topology)定义了Spout、Bolt及它们之间的关系,每个Topology包含一组持续运行的Spout和Bolt,形成一个持久的数据处理流程。不同于Hadoop MapReduce的一次性计算,Storm的Topology在提交后将持续...
4. **Task**:Worker进程中的一个线程,执行具体的Spout或Bolt任务。 5. **Slots**:表示系统总的进程数量,每个Slot可以运行一个Worker进程。 6. **Nimbus与Supervisors**:通过Zookeeper集群进行交互和协调。...
Storm由多个组件构成,包括Nimbus(集群协调者)、Supervisor(工作节点管理器)、Worker进程(运行拓扑任务)以及Spout(数据源)和Bolt(数据处理器)。在“Hello World”示例中,我们将创建一个简单的拓扑,该...
1. **Storm架构**:Storm的核心组件包括nimbus(主控节点)、supervisor(工作节点)、worker进程、spout(数据源)和bolt(处理逻辑)。Nimbus负责任务调度,Supervisor管理worker进程,worker运行spout和bolt实例...
Nimbus负责任务调度和资源分配,Supervisor接收Nimbus的任务并管理Worker进程,Worker则实际运行Spout和Bolt任务。通过DAG(有向无环图)计算模型,数据以Tuple的形式在Spout和Bolt之间流动,进行处理。 在实际应用...
Bolt 是 Storm 中的数据处理组件,负责处理 Spout 输出的数据。Bolt 的主要方法包括: * execute():处理数据元组。 * declareOutputFields():声明输出字段。 * prepare():准备数据处理环境。 实践 Storm 下面...
Storm的核心概念包括拓扑(Topology)、工作者(Worker)、节点(Task)以及 Bolt 和 Spout。拓扑是Storm中的工作单元,它由多个Spout和Bolt组成,定义了数据流的处理逻辑。Spout是数据流的来源,它可以是任何类型的...
在 Storm 中,用户可以指定每个 Spout 和 Bolt 的并发度,即运行这些组件的 Task 的数量。并发度决定了数据处理的并行程度。高并发度意味着更多的并行处理能力,但也可能增加资源消耗。 **1.4 Worker 与 Topology**...
Apache Storm的工作原理基于一个由多个节点组成的集群,其中包含Supervisor、Nimbus和Worker节点。Supervisor负责管理物理机器上的worker进程,Nimbus是主控节点,负责任务调度和分配,而Worker则执行实际的计算任务...
1. **Tuple**:Storm的基本数据结构,类似于键值对,用于在Spout和Bolt之间传递数据。 2. **Topology**:一个Storm应用由多个Spout和Bolt组成,它们通过Tuples连接形成拓扑结构,定义数据流的处理逻辑。 3. **Stream...
- **Topology**:Storm中的数据处理逻辑被封装在Topology中,它定义了数据流如何在组件之间流动。 - **Spout**:Spout是数据流的源头,负责读取外部数据并将其发送到Storm中进行处理。 - **Bolt**:Bolt是数据处理...
工作进程负责执行实际的数据处理任务,而任务(task)是在工作进程中的线程,执行具体的Spout或Bolt任务。 4. Storm内部运行机制:Storm通过Zookeeper集群来协调节点之间的工作,并保证任务分配的高效和可靠性。...
- Supervisor在各个工作节点上运行,负责启动和管理Worker进程,Worker则运行实际的Spout和Bolt实例。 通过"StormDemo"这个练习,你可以了解如何构建和运行一个简单的Storm应用,包括定义Spout和Bolt,配置拓扑,...
首先,书中会介绍Storm的基本概念,包括它的核心组件—— Nimbus、Supervisor、Worker、Spout和Bolt。Nimbus是集群的主控节点,负责任务调度和资源分配;Supervisor是工作节点,管理具体的worker进程;Worker则是...
3. **Storm架构**:Storm的核心组件包括 Nimbus、Supervisor、Worker、Spout 和 Bolt。Nimbus 负责任务调度,Supervisor 管理节点上的工作进程,Worker 执行具体任务,Spout 生成数据流,而 Bolt 处理数据并进行计算...