Stream grouping-storm的流分组策略

时间:2022-12-14 10:40:55

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:

Stream grouping-storm的流分组策略

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

Stream grouping-storm的流分组策略的更多相关文章

  1. 简单聊聊Storm的流分组策略

    简单聊聊Storm的流分组策略 首先我要强调的是,Storm的分组策略对结果有着直接的影响,不同的分组的结果一定是不一样的.其次,不同的分组策略对资源的利用也是有着非常大的不同,本文主要讲一讲loca ...

  2. Storm Grouping —— 流分组策略

    Storm Grouping: Shuffle Grouping :随机分组,尽量均匀分布到下游Bolt中 将流分组定义为混排.这种混排分组意味着来自Spout的输入将混排,或随机分发给此Bolt中的 ...

  3. storm的流分组

    用的是ShuffleGrouping分组方式,并行度设置为3 这是跑下来的结果 参考代码StormTopologyShufferGrouping.java package yehua.storm; i ...

  4. Storm概念学习系列之Stream消息流 和 Stream Grouping 消息流组

    不多说,直接上干货! Stream消息流是Storm中最关键的抽象,是一个没有边界的Tuple序列. Stream Grouping 消息流组是用来定义一个流如何分配到Tuple到Bolt. Stre ...

  5. storm 的分组策略深入理解(-)

    目录 storm的分组策略 根据实例来分析分组策略 common配置: Shuffle grouping shuffle grouping的实例代码 ShuffleGrouping 样例分析 Fiel ...

  6. 【Storm篇】--Storm分组策略

    一.前述 Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发.对多个并行度的时候有用. 二.具体原理 1. Shuffle Grouping 随机分组,随机派 ...

  7. Storm流分组介绍

    Storm流分组介绍                流分组是拓扑定义的一部分,每个Bolt指定应该接收哪个流作为输入.流分组定义了流/元组如何在Bolt的任务之间进行分发.在设计拓扑的时候需要定义数据 ...

  8. Storm 第三章 Storm编程案例及Stream Grouping详解

    1 功能说明 设计一个topology,来实现对文档里面的单词出现的频率进行统计.整个topology分为三个部分: SentenceSpout:数据源,在已知的英文句子中,随机发送一条句子出去. S ...

  9. Storm编程入门API系列之Storm的Topology的stream grouping

    概念,见博客 Storm概念学习系列之stream grouping(流分组) Storm的stream grouping的Shuffle Grouping 它是随机分组,随机派发stream里面的t ...

随机推荐

  1. Javascript实现HashTable类

    散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...

  2. POJ3461 KMP 模板题

    最近忙着考研复习,所以刷题少了.. 数据结构昨天重新学习了一下KMP算法,今天自己试着写了写,问题还不少,不过KMP算法总归是理解了,以前看v_JULY_v的博客,一头雾水,现在终于懂了他为什么要在算 ...

  3. 动画制作库tween样例学习

    mark: https://www.npmjs.com/package/tween

  4. php中的常用数组函数(三)(获取数组交集的函数们 array&lowbar;intersect&lpar;&rpar;、array&lowbar;intersect&lowbar;key&lpar;&rpar;、array&lowbar;intersect&lowbar;assoc&lpar;&rpar;、array&lowbar;intersect&lowbar;uassoc&lpar;&rpar;、array&lowbar;intersect&lowbar;ukey&lpar;&rpar;)

    这5个获取交集的函数 有 5个对应的获取差集的函数.我是链接. array_intersect($arr1, $arr2); //获得数组同键值的交集 array_intersect_key($arr ...

  5. java消息队列使用场景

    http://blog.163.com/sir_876/blog/static/11705223201332444647261/ 目前能用到的比较不错的消息队列组件 ,kafka,activeMq, ...

  6. javascript第十八课:windowd对象的方法

    window.confirm('确定删除吗?'); //当用户点击一个按钮出发一个事件的时候,弹出一个提示框让网友确认,返回一个bool值,点确定的话,返回true,点取消,返回flase windo ...

  7. Contaminated Milk

    Contaminated Milk 题目描述 Farmer John, known far and wide for the quality of the milk produced on his f ...

  8. 软工实践项目需求分析(团队)修改版get&Sqrt;-黄紫仪

    日常前言:随笔距离文档大体完成已经过去了2天+(因为中间插了一波结对作业),所以目测感受没有那时候清晰(那时候烦的想打人了都--)需求分析那边去百度找了模板.emmmm好多东西感觉听都没听说过QAQ, ...

  9. &lbrack;HZOI 2016&rsqb;公路修建

    [题目描述] OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨 ...

  10. 轻量级集群管理软件-Ansible

    ansible概述和运行机制 ansible概述 Ansible是一款为类Unix系统开发的*开源的配置和自动化工具,  它用Python写成,类似于saltstack和Puppet,但是有一个不同 ...