• storm并行度核心概念介绍剖析


    一.Storm的并行介绍

      并行意味着多个任务在不同的节点上,且每个节点都可独立运行,并且相互之间没有依赖。

      而在storm上,storm提交的jobs(任务)通过nimbus分发到多个supervisor上,jobs的执行都是通过supervisor来运行和执行的。

      1.worker: 代表一个进程

        storm的配置文件storm.ymlsupervisor.slots.port配置的个数,可以看做一个worker就对应一台机器上配置的slotnimbus会把任务分发到不同的supervisor上,所有提交的job都是通过supervisor来执行和运行的。一个topology有多个spout bolt构成,一个work在执行时可能执行了一个topology中的spout 或者bolt,总之,work是一个进程级别的,由supervisor负责管理、启动、监控这个进程,然后再将运行后的数据反馈给nimbus。

      2..executor:代表一个线程

        每个executor只运行topology下的spout bolt中的一个或者多个实例,executor可以被动态的修改

         storm提交的任务通过nimbus分发到不同的supervisor上,通过不同的supervisor来运行和执行任务,一个topology 由多个spout 或多个bolt 组成。

        在supervisor的存在多个worker,而每一个worker可以执行topologytopology包含了spout bolt

      3.taskstorm是一个最小的粒度单元

        其实可以把task理解成线程的run的方法体,每一个spout bolt都会生成一个实例由task去执行,一旦task被定义后,是不能被改变的。

        当一个或多个executor执行一个或多个task实例时可以称为并行。

    二.Storm并行度的算法   

      executor的算法: n [worker数量] + n[spout并行系数] + n[bolt并行系数]

        ack是系统级运行线程,ack数量与worker数量相等,也相当于一个task任务

      task的算法:

        n[spout数量] + n[bolt数量] + n[worker数量]

    三.Storm并行度的设置

    Configure Work    #进程的设置
    Config config = new Config();
    config.setNumWorkers(3);
    Configure executor  #线程的设置
    builder.setSpout(“SampleSpout”,new SampleSpout(),2);
    builder.setBolt(“SampleBolt”,new SampleBolt(),4).shuffeGrouping(“SampleSpout”);
    Configure Task    #task的设置
    builder.setSpout(“sampleSpout”,new SampleSpout(),2).setNumTasks(4);

    四.Storm 的rebalance

      在我们配置完一些并行度的参数后,是不能再去修改,尤其是task的数量是不能更改的,但是可以通过storm rebalance 来调整work的数量以及spout bolt的数量

      命令:

    storm rebalance [topologyName] -n [NumberOfWorkers] -e [spout]=[NumberOfExecutors]  -e[Bolt1]=[NumberOfExecutors] [Bolt2]=[NumberOfExecutors]

      

  • 相关阅读:
    JavaScript内置对象
    微信小程序:实现可拖动悬浮图标(包括按钮角标的实现)
    项目1——博客系统
    在HTML中使用css3实现雪人动画效果
    Ajax请求后台发送String类型总是进入Error function解决办法总结
    原生js实现图片懒加载
    【Electron Playground 系列】自定义协议篇
    大规格文件的上传优化
    如何优雅的在react-hook中进行网络请求
    noip2008 双栈排序
  • 原文地址:https://www.cnblogs.com/MrRightZhao/p/11041272.html
Copyright © 2020-2023  润新知