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:
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的流分组策略的更多相关文章
- 简单聊聊Storm的流分组策略
简单聊聊Storm的流分组策略 首先我要强调的是,Storm的分组策略对结果有着直接的影响,不同的分组的结果一定是不一样的.其次,不同的分组策略对资源的利用也是有着非常大的不同,本文主要讲一讲loca ...
- Storm Grouping —— 流分组策略
Storm Grouping: Shuffle Grouping :随机分组,尽量均匀分布到下游Bolt中 将流分组定义为混排.这种混排分组意味着来自Spout的输入将混排,或随机分发给此Bolt中的 ...
- storm的流分组
用的是ShuffleGrouping分组方式,并行度设置为3 这是跑下来的结果 参考代码StormTopologyShufferGrouping.java package yehua.storm; i ...
- Storm概念学习系列之Stream消息流 和 Stream Grouping 消息流组
不多说,直接上干货! Stream消息流是Storm中最关键的抽象,是一个没有边界的Tuple序列. Stream Grouping 消息流组是用来定义一个流如何分配到Tuple到Bolt. Stre ...
- storm 的分组策略深入理解(-)
目录 storm的分组策略 根据实例来分析分组策略 common配置: Shuffle grouping shuffle grouping的实例代码 ShuffleGrouping 样例分析 Fiel ...
- 【Storm篇】--Storm分组策略
一.前述 Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发.对多个并行度的时候有用. 二.具体原理 1. Shuffle Grouping 随机分组,随机派 ...
- Storm流分组介绍
Storm流分组介绍 流分组是拓扑定义的一部分,每个Bolt指定应该接收哪个流作为输入.流分组定义了流/元组如何在Bolt的任务之间进行分发.在设计拓扑的时候需要定义数据 ...
- Storm 第三章 Storm编程案例及Stream Grouping详解
1 功能说明 设计一个topology,来实现对文档里面的单词出现的频率进行统计.整个topology分为三个部分: SentenceSpout:数据源,在已知的英文句子中,随机发送一条句子出去. S ...
- Storm编程入门API系列之Storm的Topology的stream grouping
概念,见博客 Storm概念学习系列之stream grouping(流分组) Storm的stream grouping的Shuffle Grouping 它是随机分组,随机派发stream里面的t ...
随机推荐
- Educational Codeforces Round 25 B. Five-In-a-Row
题目链接:http://codeforces.com/contest/825/problem/B B. Five-In-a-Row time limit per test 1 second memor ...
- 读DEDECMS找后台目录有感
本文作者:红日安全团队——Mochazz 早上看了先知论坛的这篇文章:解决DEDECMS历史难题–找后台目录 不得不说作者思路确实巧妙,作者巧妙的利用了Windows FindFirstFile和织梦 ...
- javaweb+spring 项目集成异常的处理
在web项目开发中,一个系统应该要考虑到异常情况的处理,并且应该当异常发生时应该需要记录相应的异常日志,对于用户而言则不能直接抛出异常,需要考虑到用户的体验: 以下就介绍基于spring框架的基础上的 ...
- Java之Spring Boot学习
1.如何配置pdf.xls页面解析器.2.如何整合SpringBoot+JPA+Session+Redis配置.3.SpringBoot整合Mybatis之事务用法.4.JUnit Test单元测试用 ...
- 【PaddlePaddle系列】Executor逐步训练模型
前言 PaddlePaddle使用Trainer训练模型虽然直接了当,方便快捷,但是对于一些需要逐步训练的模型则比较麻烦.类似Tensorflow采用session.run的形式逐步训练模型,使得训练 ...
- C语言 for循环次数
for (i = 0;i < n;i++) 则循环次数是N,而循环结束以后,i的值是n.循环的控制变量i,是选择从0开始还是从1开始,是判断i<n 还是i <= n,对循环的次数,循 ...
- Linux实用指令
Linux实用指令 Rpm&Yum 一种用于互联网下载包的打包和安装工具,它包含某些Linux分发版中,它生产具有 .rpm 扩展名的文件.RPM 是 RedHat Package Man ...
- 原生JavaScript的DOM操作方法总结
什么是DOM? DOM即文档对象模型,Document Object Model. 是HTML和XML文档的编程接口.它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从 ...
- AndroidStudio报错Software caused connection abort: recv failed
Software caused connection abort: recv failed 这个问题网上有一种说法 已知会导致这种异常的一个场景如下: 客户端和服务端建立tcp的短连接,每次客户端发送 ...
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...