理解Storm Topology的并发机制
来源:互联网 发布:淘宝html代码 编辑:程序博客网 时间:2024/06/04 18:45
运行时topology的组成:worker processes、executors(执行者线程)以及tasks
Storm区分了以下三个主要的实体并用来在Storm集群上运行起一个topology:
1.Worker processes
2.Executors(线程)
3.Tasks
下面是这3者关系的一个简单示例:
一个worker process负责执行topology的部分子集。单个worker process归属于一个特定的topology并且可以为该topology的一个或多个组件(spouts或者bolts)运行一个或者多个executors。一个运行的topology由Storm集群中多台机器上运行着的多个processes(进程)组成。
一个executor其实就是由一个worker process生成的线程。executor将会为同一个组件(spout/bolt)运行多个tasks(任务)。
一个task负责进行数据处理---我们的代码实现的每个spout或者bolt会在集群上执行许多的任务。一个组件的tasks的数量在topology的整个生命周期中都是一样的。但是一个组件的executors的数量却会改变。这就意味着出出现这样一种情形:#threads <= #tasks。默认情况下,executor的数量与task的数量会设置成一样。例如:Storm中会每个executor运行一个task。
topology的并发设置
注意Storm中的术语"parallelism"被用来特指Storm中的parallelism hint,parallelism hint的意思是一个组件的初识executor的数量。这个文档中我们就用"parallelism"(并发)这个更宽泛的术语来描述:不仅仅限于executors的数量,还有worker processes的数量以及tasks的数量。在用"parallelism"来标识正常或者更特指的定义时,我们会特别提醒的。
接下来对多种配置选项的一个概览。我在Storm配置概览这篇文章中提到了Storm配置的优先级:defaults.yaml<storm.yaml<topology-specific configuration<internal component-specific configuration<external component-specific configuration。
worker processes的数量
·描述:为topology在集群机器上创建多少work processes。
·配置项:TOPOLOGY_WORKERS
·如何在代码中设置
- Config#setNumWorkers
·描述:为每个组件创建多少task
·配置项:TOPOLOGY_TASKS
·如何在代码中设置(只是个例子):
- ·ComponentConfigurationDeclarer#setNumTasks()
下面给出了这些配置的一个例子
topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping("blue-spout");在代码中我们配置了Storm中的bolt(GreenBolt)其中初始的executor数量为2以及相关taks数为4。Storm将会使每个executor运行两个task。如果没有显式的配置task数,Storm会每个executor运行一个task。
一个运行中的topology示例
下面这个示例展示了一个简单的topology的运行。这个topology有3个组件组成:一个spout(BlueSpout)以及两个bolt(GreenBolt和YellowBolt)。由BlueSpout发送线性给GreenBolt,然后,GreenBolt发送消息给YellowBolt。
Config conf = new Config();conf.setNumWorkers(2); // use two worker processestopologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // set parallelism hint to 2topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping("blue-spout");topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6) .shuffleGrouping("green-bolt");StormSubmitter.submitTopology( "mytopology", conf, topologyBuilder.createTopology() );可以看到,BlueSpout与YellowBolt未设置task数,故默认task数与executor数相同。而GreenBolt设置了task数为4,故每个executor运行两个task。
## 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 rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
- 理解Storm Topology的并发机制
- Storm 中Topology的并发度的理解 (1)
- Storm 中Topology的并发度的理解 (2)
- 关于Storm 中Topology的并发度的理解<转>
- 对storm中Topology的并发度理解
- Storm Topology的并发度
- Storm Topology的并发度
- Storm Topology的并发度
- Storm Topology的并发度
- 【Storm总结-2】关于Storm 中Topology的并发度的理解
- 【Storm总结-2】关于Storm 中Topology的并发度的理解<转>
- 【Storm总结-2】关于Storm 中Topology的并发度的理解
- storm学习-Storm Topology的并发度(转)
- storm记录--9- Storm Topology的并发度
- Storm Topology的并发度 (task和executor工作模型)
- Storm中Topology的状态
- Storm Topology的性能瓶颈
- Storm的有环Topology
- 第七周--项目五--排队看病模拟
- 精通Nginx应用篇之配置与Location详解
- javascript基础大全
- java使用jxl导出excel字符串类型转化成数值型
- OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
- 理解Storm Topology的并发机制
- 房地产专家眼中的2015年下半年房价走势
- 使用 ssh key 验证 github
- 函数返回值存放在哪里?return到哪里?
- poj 上题目分类
- Centos5 安装 fpm
- php手册之匿名函数
- vim使用
- [每日一答] [20151014] MySQL统计函数记录——时间段统计