storm-并行度

本文介绍了Apache Storm中拓扑的运行机制,包括worker进程、执行器和任务的基本概念及配置方式。阐述了如何通过调整这些组件的数量来优化并行处理性能。

什么让 topology(拓扑)可以运行

worker 进程, executors(执行器)和 tasks(任务)。

一个 worker 进程 执行一个 topology(拓扑)的子集. 一个 worker 进程属于一个指定 topology(拓扑)。
并且针对该 topology 的一个或多个组件(spouts 或 bolts)来说会运行一个或更多的 executors(执行器)。
一个正在运行的 topology 由许多这样的进程组成, 它们运行在 Storm 集群的多个机器上.
一个 executor(执行器) 是一个线程, 它是由 worker 进程产生的. 它可能针对相同的组件(spout 或 blot)运行一个或多个 tasks(任务)。默认为一个线程运行一个任务。
一个 task 执行实际的数据处理 - 在您代码中实现的每个 spout 或 bolt 在整个集群上都执行了许多的 taskk(任务)。
 组件的 task(任务)数量在 topology(拓扑)的整个生命周期中总是相同的, 但组件的 executors(线程)数量可能会随时间而变化.
 这意味着以下条件成立: #threads ≤ #tasks. 默认情况下, 默认情况下,tasks(任务)数量与 executors(执行器)设置成一样, 例如. Storm 在每个线程上运行一个 task(任务).
 

配置 topology 的 parallelism(并行度)

worker 进程的数量

描述: 在集群的机器中有多少个 worker 进程来 针对 topology 以创建它.
配置选项: TOPOLOGY_WORKERS
如何在代码中设置(示例):Config#setNumWorkers


executors (线程)的数量


描述: 每个 component(组件) 产生多少个 executors(执行器).
配置选项: None (传递 parallelism_hint 参数到 setSpout 或 setBolt)
如何在代码中设置(示例):
        TopologyBuilder#setSpout("id",spout,parallelism_hint)
        TopologyBuilder#setBolt("id",bolt,parallelism_hint)
参数现在指定了 bolt 的 executors(执行器)的初始化数量(不是 tasks).

tasks(任务)的数量

描述: per component 有多少个 tasks(任务)来创建他们.
 配置选项: TOPOLOGY_TASKS
如何在代码中设置(示例):
        ComponentConfigurationDeclarer#setNumTasks()

以下是在练习中显示这些设置的示例代码片段:

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout");

在上面的代码中,我们配置 了Storm 来运行 Bolt "GreenBolt", 其初始数量为两个 executor(执行器)和四个相关联的 tasks(任务). Storm 的每个 executor(线程)将会运行两个 tasks(任务). 如果您不显示的配置 tasks 的数量, Storm 将使用每个 executor 一个 task 的默认配置来运行它们.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值