zoukankan      html  css  js  c++  java
  • Stream grouping-storm的流分组策略

    A stream grouping tells a topology how to send tuples between two components. Remember, spouts and bolts execute in parallel as many tasks across the cluster.

    Stream grouping的作用是告诉topology如何在组件(Spout/Bolt)之间传递tuples。

    一个拓扑(topology)的执行就一个Spout和很多个Bolt在storm集群中执行。下图中的连线就是流(stream)

    If you look at how a topology is executing at the task level, it looks something like this:

    Tasks in a topology

    Spouts和bolts 可以统称为task,也可以统称为组件(components)后者更恰当一些。

    works:在一个supervisor节点可以运行多个jvm进程一个端口一个,每个节点一般开3个以上看硬件配置。一个work就是一个java进程。一个worker包含多个exectors

    topology:可以包含一个或者多个worker并行的在不同的机器上执行,

    exectors : 默认每个excutor只执行一个task

    tasks(bolt/spout) : 每一个spout或者bolt会被当做很多task在集群里面执行,每一个task对应一个线程

    component组件就是指(bolt/spout) : 每个sput或者bolt至少对应一个executor

    stream grouping: 定义怎么从一堆task发射tuple到另一堆task

    works jvm:在一个节点可以运行多个jvm进程,一个topology可以包含一个或者多个worker并行的泡在不同的machine,所以一个work progress就是执行一个topology的子集

    并且一个worker只能对应一个toplogy

    exectors在一个worker可以包含一个或者多个tasks,但默认每个excutor只执行一个task,一个worker包含多个exectors,每个component(spout和bolt)至少对应一个executor

    tasks(bolt/spout instance) task就是具体的处理对象,每一个spout和bolt会被当做很多task在集群里面执行,每一个task对应一个线程,而stream grouping则是定义怎么从一堆task发射tuple到另一堆task,可以调用ToplogyBuilder.setSpout和TopBuilder.setBolt来设置并行度,也就是多个task配置并行度

    对于并行度的配置,在storm可以在多个地方进行配置, 优先级为

    defaults.yaml<storm.yaml<topology-specific configuration<internal component-specific configuration<external componnet -specific configuration

    work process 的数目,可以通过配置文件和代码中的配置,work就是执行进程,所以考虑并发的效果,数目

    至少应该大于machines数目

    executor数目 component的并发线程数, 只能在代码中配置通过setbolt和setspout的参数,列如 setbolt("green-bolt",new GreenBolt(),2)

    tasks数目,可以不配置,默认和executor1:1,也可以通过设置setNumTask()配置

    配置并行度

    Topology 的worker数通过config设置,也就是执行该toplogy 的work进程数,他可以通过strom

    rebalance 命令任意调整

    Config conf=new Config();

    stream Grouping ,告诉topology如何在两个组件之间发送tuple

    定义一个topology的其中一个定义每个bolt接收什么样的流作为输入。stream grouping 就是用来stream应该stream应该

    如果分配数据给bolts上面的多个tasks

    列如:当:boltA 的一个task要发送一个tuple给bolt B , 他应该发送--

    storm里面有7种 stream grouping

    1.shuffle grouping 

    2.fields grouping

    3.all grouping

    4.global grouping

    5.none grouping

    6.direct grouping

    7local or shuffle grouping

    refer to: http://storm.apache.org/releases/current/Tutorial.html

  • 相关阅读:
    手把手教你用jQuery Mobile做相册
    一篇文章教会你用Python爬取淘宝评论数据(写在记事本)
    [C#] (原创)一步一步教你自定义控件——01,TrackBar
    性能测试系列(4)-进程和线程的区别
    熊海CMS_1.0 代码审计
    Web Security Academy ___XXE injection___Lab
    关于路径存储的常见优化——前向星与链式前向星
    2020.7.27考试D1T2:方块消除(Block)
    2020.7.27考试D1T1:Cow Pie Treasures
    【DP水题】P4823 [TJOI2013]拯救小矮人
  • 原文地址:https://www.cnblogs.com/ze-lin/p/10106300.html
Copyright © 2011-2022 走看看