首页 > 其他分享 >【Storm篇】--Storm并发机制

【Storm篇】--Storm并发机制

时间:2022-12-30 17:37:20浏览次数:55  
标签:Task -- Worker 并发 线程 Storm Executor 进程



=========================================================

声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!

个人网站地址:​http://www.lhworldblog.com/

==========================================================



一、前述

为了提高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)
          总共的task数这个Bolt任务的
               .shuffleGrouping("blue-spout);

3.案例详解

 

【Storm篇】--Storm并发机制_数据处理

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进程超过集群配置时,还是按集群最大配置运行。


 

标签:Task,--,Worker,并发,线程,Storm,Executor,进程
From: https://blog.51cto.com/u_11936913/5980847

相关文章

  • antv g6 4.7版本
    antv4.8文档设置可缩放拖动画布letgraph=newG6.Graph({modes:{//拖拽画布缩放画布default:['drag-canvas','zoom-canvas']}......
  • 【Storm篇】--Storm 容错机制
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • 关于AWS-EBS-volume信息的收集方法及性能对比
    笔者刚开始只是注意到了EC2下面的classEC2.Volume(id)- AresourcerepresentinganAmazonElasticComputeCloud(EC2)Volume:可参考:https://boto3.amazonaws.com......
  • 【Storm篇】--Storm分组策略
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • HDLBits--Verilog习题记录4
    4.Circuits---SequentialLogic---LatchesandFlip-Flops----Edgecaptureregister问题描述:Foreachbitina32-bitvector,capturewhentheinputsignalchanges......
  • 曾行贿多达18起,这家疫苗龙头究竟怎么了?
    文|熔财经作者|艾尼欧疫苗龙头北京科兴生物(通常称“科兴生物”)再度引发争议。近日,名为#科兴三针防感染率仅8%是真的吗#的话题,冲上新浪微博和抖音的热搜榜,获得了不少网友的关......
  • 【Storm篇】--Storm基础概念
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......
  • 数组——多维数组、Arrays类讲解
    数组——多维数组、Arrays类讲解多维数组多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。二维数组inta[][]=newi......
  • 手写防抖
    手写一个防抖防抖和节流都是依托定时器来完成的lettimer=nullinput1.addEventLister('keyup',function(){if(timer){clearTimeout(timer)}timer=......
  • 【机器学习】--线性回归中L1正则和L2正则
    =========================================================声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!个人网站地址:​​http://www.lhworldblog.......