前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Storm篇】--Storm并发机制

【Storm篇】--Storm并发机制

作者头像
LhWorld哥陪你聊算法
发布2018-09-13 14:06:51
7840
发布2018-09-13 14:06:51
举报

一、前述

为了提高Storm的并行能力,通常需要设置并行。

二、具体原理

1. Storm并行分为几个方面:

Worker – 进程 一个Topology拓扑会包含一个或多个Worker(每个Worker进程只能从属于一个特定的Topology) 这些Worker进程会并行跑在集群中不同的服务器上,即一个Topology拓扑其实是由并行运行在Storm集群中多台服务器上的进程所组成 Executor – 线程 Executor是由Worker进程中生成的一个线程 每个Worker进程中会运行拓扑当中的一个或多个Executor线程 一个Executor线程中可以执行一个或多个Task任务(默认每个Executor只执行一个Task任务),但是这些Task任务都是对应着同一个组件(Spout、Bolt)。 Task 实际执行数据处理的最小单元 每个task即为一个Spout或者一个Bolt 注意:

Task数量在整个Topology生命周期中保持不变,Executor数量可以变化或手动调整 (默认情况下,Task数量和Executor是相同的,即每个Executor线程中默认运行一个Task任务)

2.在程序中具体设置:

设置Worker进程数 Config.setNumWorkers(int workers) 设置Executor线程数 TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint) TopologyBuilder.setBolt(String id, IRichBolt bolt, Number parallelism_hint) :其中, parallelism_hint即为executor线程数 设置Task数量 ComponentConfigurationDeclarer.setNumTasks(Number val) 例: Config conf = new Config() ; conf.setNumWorkers(2);//设置worker数 TopologyBuilder topologyBuilder = new TopologyBuilder(); topologyBuilder.setSpout("spout", new MySpout(), 1);//设置线程数 topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)      .setNumTasks(4)//设置总共的task数这个Bolt任务的                .shuffleGrouping("blue-spout);

3.案例详解

4.Rebalance – 再平衡 即,动态调整Topology拓扑的Worker进程数量、以及Executor线程数量 支持两种调整方式: 1、通过Storm UI 2、通过Storm CLI(一般用这个!!!) 通过Storm CLI动态调整: 例:storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10 将mytopology拓扑worker进程数量调整为5个 “ blue-spout ” 所使用的线程数量调整为3个 “ yellow-bolt ”所使用的线程数量调整为10个

PS:当调整的task或者worker进程超过集群配置时,还是按集群最大配置运行。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档