第1节 storm编程:8、storm的分发策略

8. Storm的分发策略

Storm当中的分组策略,一共有八种:

所谓的grouping策略就是在Spout与Bolt、Bolt与Bolt之间传递Tuple的方式。总共有八种方式:

1)shuffleGrouping(随机分组)随机分组;将tuple随机分配到bolt中,能够保证各task中处理的数据均衡;

2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)

按字段分组; 根据设定的字段相同值得tuple被分配到同一个bolt进行处理;

举例:builder.setBolt("mybolt", new MyStoreBolt(),5).fieldsGrouping("checkBolt",new Fields("uid"));

说明:该bolt由5个任务task执行,相同uid的元组tuple被分配到同一个task进行处理;该task接收的元祖字段是mybolt发射出的字段信息,不受uid分组的影响。

该分组不仅方便统计而且还可以通过该方式保证相同uid的数据保存不重复(uid信息写入数据库中唯一);

3)allGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)广播发送:所有bolt都可以收到该tuple

4)globalGrouping(全局分组,将Tuple分配到task id值最低的task里面)全局分组:tuple被发送给bolt的同一个并且最小task_id的任务处理,实现事务性的topology

5)noneGrouping(随机分派)不分组:效果等同于shuffle Grouping.

6)directGrouping(直接分组,指定Tuple与Bolt的对应发送关系)

直接分组:由tuple的发射单元直接决定tuple将发射给那个bolt,一般情况下是由接收tuple的bolt决定接收哪个bolt发射的Tuple。这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。 只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来获取处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)。

7)Local or shuffle Grouping本地或者随机分组,优先将数据发送到本机的处理器executor,如果本机没有对应的处理器,那么再发送给其他机器的executor,避免了网络资源的拷贝,减轻网络传输的压力

8)customGrouping (自定义的Grouping)

原文地址:https://www.cnblogs.com/mediocreWorld/p/11241539.html

时间: 2024-10-07 06:35:23

第1节 storm编程:8、storm的分发策略的相关文章

第1节 storm编程:2、storm的基本介绍

课程大纲: 1.storm的基本介绍 2.storm的架构模型 3.storm的安装 4.storm的UI管理界面 5.storm的编程模型 6.storm的入门程序 7.storm的并行度 8.storm的消息的分发策略 9.strom与kafka的集成  搞定 10.            实时看板综合案例 1. storm的基本介绍 storm的官网:http://storm.apache.org/ twitter公司开源提供的,最早的一个版本是0.8.0,处理速度比较快 认知的海岛越大,

Storm集群上的开发 ,Topology任务的编写 之 WordCountTopology数据流分析(storm编程模型)(一张图说明问题)(四)

WordCountTopology数据流分析(storm编程模型) 上一章的example的单词统计在storm的数据流动到底是怎么进行的呢,这一章节开始介绍:

storm入门(一):storm编程框架与举例

基础 http://os.51cto.com/art/201308/408739.htm 模型 http://www.cnblogs.com/linjiqin/archive/2013/05/28/3104016.html 一.Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability Tasks Workers Configuration Storm集群和Hado

1 storm基本概念 + storm编程规范及demo编写

本博文的主要内容有 .Storm的单机模式安装 .Storm的分布式安装(3节点)   .No space left on device .storm工程的eclipse的java编写 http://storm.apache.org/ 分布式的一个计算系统,但是跟mr不一样,就是实时的,实时的跟Mr离线批处理不一样. 离线mr主要是做数据挖掘.数据分析.数据统计和br分析. Storm,主要是在线的业务系统.数据像水一样,源源不断的来,然后,在流动的过程中啊,就要把数据处理完.比如说,一些解析,

Storm 系列(五)—— Storm 编程模型详解

一.简介 下图为 Strom 的运行流程图,在开发 Storm 流处理程序时,我们需要采用内置或自定义实现 spout(数据源) 和 bolt(处理单元),并通过 TopologyBuilder 将它们之间进行关联,形成 Topology. 二.IComponent接口 IComponent 接口定义了 Topology 中所有组件 (spout/bolt) 的公共方法,自定义的 spout 或 bolt 必须直接或间接实现这个接口. public interface IComponent ex

Storm入门(Storm程序)

Storm简介 Storm是一个分布式实时流式框架,大多应用于以下场景:实时分析.在线机器学习.流式计算.分布式RPC ETL(BL分析)等等.同类型的框架有hadoop和spark.hadoop侧重于海量数据的离线计算,spark则更擅长实时迭代计算.要注意的是,storm并不直接处理数据,而是把我们的业务程序(逻辑)放在很多服务器上并发运行,待处理消息被分散到很多服务器上并发处理,以此扩展程序的负载能力. Direction 简单来说的话,Storm框架包含两个部分.一个是Storm程序,一

【Twitter Storm系列】Storm环境配置及吞吐量测试调优--个人理解

1.硬件配置信息 6台服务器,2个CPU,96G,6核,24线程 2.集群信息 Storm集群:1个nimbus,6个supervisor nimbus:192.168.7.127 supervisor: 192.168.7.128 192.168.7.129 192.168.7.130 192.168.7.131 192.168.7.132 192.168.7.133 Zookeeper集群: 3个节点 192.168.7.127:2181, 192.168.7.128:2181, 192.1

MFC第二节-网络编程

使用socket编程. 一.需要套接字库.要知道申请的套接字库的版本,版本号利用WORD类型表示:MAKEWORD,加载后要检查得到的是否是申请的版本. 二.需要创建套接字.套接字SOCKET结构体. 三.SOCKET对象和SOCKADDR套接字地址绑定,对TCP\IP编程中,可以用SOCKADDR_IN代替SOCKADDR(都是代表地址空间).SOCKADDR_IN包括sin_family:地址族,对于IP地址一直是AF_INET,sin_port是按网络字节顺序表示的端口地址,sin_add

Storm 起步 Zookeeper Storm 单机部署

注意: 仅仅记录个人开发基本搭建,保证storm运行起来,目前不能保证性能以及稳定性 从其它网站各路高手记录中都需要一下四个标准套装 zeromq jzmq storm zookeeper 实际安装过程中没有发现zeromq和jzmq的用途,因此安装了Zqromq后未安装jzmq,可能是研究不够深入,后续继续发现. 一.安装Zookeeper https://zookeeper.apache.org/ 下载最新版,解压到指定目录,设置环境变量 export ZOOKEEPER_HOME=zook