Storm---DirectGroup(直接分组)】的更多相关文章

简单聊聊Storm的流分组策略 首先我要强调的是,Storm的分组策略对结果有着直接的影响,不同的分组的结果一定是不一样的.其次,不同的分组策略对资源的利用也是有着非常大的不同,本文主要讲一讲localOrShuffle这个分组对资源利用的重大改善.最后,不同的分组对项目的逻辑也起着至关重要的决定,比如在写数据的时候不同的分组策略会导致死锁. 简单理解数据流分组 拓扑定义的一部分就是为每个Bolt指定输入的数据流,而数据流分组则定义了在Bolt的task之间如何分配数据流. 目前的Storm1.…
Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来,可是的接收方是独立运行的. 2.在消息传输层保证消息最多只能发送一次,Storm系统有ACK机制,是的没有被发送成功的消息会被重发,若消息层面也重发,会导致消息发送多次. 这种消息机制由两个接口来定义,backtype.storm.messaging.IContext和backtype.storm.…
Storm Grouping: Shuffle Grouping :随机分组,尽量均匀分布到下游Bolt中 将流分组定义为混排.这种混排分组意味着来自Spout的输入将混排,或随机分发给此Bolt中的任务.shuffle grouping对各个task的tuple分配的比较均匀. Fields Grouping :按字段分组,按数据中field值进行分组:相同field值的Tuple被发送到相同的Task 这种grouping机制保证相同field值的tuple会去同一个task,这对于Word…
用的是ShuffleGrouping分组方式,并行度设置为3 这是跑下来的结果 参考代码StormTopologyShufferGrouping.java package yehua.storm; import java.util.Map; import org.apache.storm.Config;import org.apache.storm.LocalCluster;import org.apache.storm.StormSubmitter;import org.apache.stor…
前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分区数量会导致hbase客户端缓存大量的分区地址,导致内存的增长,某些系统中一个JVM进程中会开启几十个独立的hbase客户端对象,同时会查询多张Hbase表,这样JVM进程就会缓存 (预分区数 X 表数 X Hbase客户端数=条记录). 有没有这种情况?有的,在本人的storm项目中,采用结合sp…
Hbas预分区 在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分区数量会导致hbase客户端缓存大量的分区地址,导致内存的增长,某些系统中一个JVM进程中会开启几十个独立的hbase客户端对象,同时会查询多张Hbase表,这样JVM进程就会缓存 (预分区数 X 表数 X Hbase客户端数=条记录). storm的自定义分组 有没有这种情况?有的,在本…
参考链接: Tutorial storm Tutorial 中文解读+分析 导读.摘要: .hadoop有master与slave,Storm与之对应的节点是什么? .Storm控制节点上面运行一个后台程序被称之为什么? .Supervisor的作用是什么? .Topology与Worker之间的关系是什么? .Nimbus和Supervisor之间的所有协调工作有master来完成,还是Zookeeper集群完成? .storm稳定的原因是什么? .如何运行Topology? strom ja…
转载自http://www.ibm.com/developerworks/cn/opensource/os-twitterstorm/ 流式处理大数据简介 Storm 是一个开源的.大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关.了解 Twitter Storm.它的架构,以及批处理和流式处理解决方案的发展形势. Hadoop(大数据分析领域无可争辩的王者)专注于批处理.这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自高度动态的来源的…
1.Storm第一个Demo 2.Windows下基于eclipse的Storm应用开发与调试 3.Storm实例+mysql数据库保存 4.Storm原理介绍 5. flume+kafka+storm+mysql 实时架构 1.Storm第一个Demo Storm运行模式: 本地模式(Local Mode): 即Topology(相当于一个任务,后续会详细讲解)  运行在本地机器的单一JVM上,这个模式主要用来开发.调试. 远程模式(Remote Mode):在这个模式,我们把我们的Topol…
1. 离线计算是什么? 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据.Azkaban任务调度. 2. 流式计算是什么? 流式计算:数据实时产生.数据实时传输.数据实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存.持久化存储(mysql). 3. storm核心组件和…
8. Storm的分发策略 Storm当中的分组策略,一共有八种: 所谓的grouping策略就是在Spout与Bolt.Bolt与Bolt之间传递Tuple的方式.总共有八种方式: 1)shuffleGrouping(随机分组)随机分组:将tuple随机分配到bolt中,能够保证各task中处理的数据均衡: 2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt) 按字段分组: 根据设定的字段相同值得tuple被分配到同一个bolt进行处理: 举例:buil…
Stream Groupings: Stream Grouping定义了一个流在Bolt任务间该如何被切分.这里有Storm提供的6个Stream Grouping类型: 1. 随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple. 2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组.例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分…
Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证bolt中的每个任务接收到的tuple数目相同.(它能实现较好的负载均衡) Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到同一任务, 而不同的userid则会被分配到不同的任务 All Grouping: 广播发送,对于每一个tuple,Bolts中的所有任务都会收到. Global Grouping: 全局分组,这个tuple被分配到s…
Storm流分组介绍                流分组是拓扑定义的一部分,每个Bolt指定应该接收哪个流作为输入.流分组定义了流/元组如何在Bolt的任务之间进行分发.在设计拓扑的时候需要定义数据如何在组件之间进行交换(流如何被Bolt消耗处理).    一个流分组指定每个Bolt消耗哪个流.一个节点可以发出多个数据流,流分组允许我们有选择的接收流进行消耗处理.                Storm内置了7种流分组方式和一个自定义分组方式(由InputDeclarer接口定义).Inpu…
一.前述 Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发.对多个并行度的时候有用. 二.具体原理 1. Shuffle Grouping 随机分组,随机派发stream里面的tuple,保证每个bolt task接收到的tuple数目大致相同.轮询,平均分配 2. Fields Grouping(相同fields去分发到同一个Bolt)按字段分组,比如,按"user-id"这个字段来分组,那么具有同样"user-id"的…
目录 storm的分组策略 根据实例来分析分组策略 common配置: Shuffle grouping shuffle grouping的实例代码 ShuffleGrouping 样例分析 Fields grouping Fields grouping 的实例 FieldGrouping 样例分析 storm的分组策略 洗牌分组(Shuffle grouping): 随机分配元组到Bolt的某个任务上,这样保证同一个Bolt的每个任务都能够得到相同数量的元组. 字段分组(Fields grou…
以单词分割计数为例实现Storm的DirectGroup分组: 1.Spout实现 Spout是Storm数据源头,使用DirectGroup方式将Spout数据发送指定的Bolt,需注意: 1).Spout消费的Bolt的Task(Task应为Storm的Executor的编号),在如下代码中Spout.open()初始化中拿到消费Task 2).需使用SpoutOutputCollector.emitDirect()方法 3).将Spout声明为直接流,即在Spout.declareOutp…
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 内容简介 本文是Storm系列之一,介绍了Storm的起源,Storm作者的八卦,Storm的特点和Storm模型的基本原理,着重介绍了Storm中的基本概念(Spout, Bolt, Stream, Tuple等)和对应的编程接口,可以作为Storm的入门文档来阅读. 八卦 之前的技术文章都写的有点一板一眼,太正经了.今天在文章正式开始前,跟大家八卦一下Storm的…
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 一个Storm拓扑,就是一个复杂的多阶段的流式计算.Storm中的组件(Component)就是对各个阶段的一个抽象,其中的Spout是生产者的角色,它负责源源不断地从Storm外部接收消息,扔给下游的组件处理,下游组件处理完成后,最终输出到外部的存储系统. 本文主要讲解消息在Storm内部的各个组件(Component)之间如何进行传递,本文适用于JStorm 2.…
Storm介绍 Storm是由Twitter开源的分布式.高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求.Storm常用于在实时分析.在线机器学习.持续计算.分布式远程调用和ETL等领域. 在Storm的集群里面有两种节点:控制节点(Master Node)和工作节点(Worker Node).控制节点上面运行一个名为Nimbus的进程,它用于资源分配和状态监控:每个工作节点上面运行一个Supervisor的进程,它会监听分配给它所在机器的…
1.hadoop有master与slave,Storm与之对应的节点是什么? 2.Storm控制节点上面运行一个后台程序被称之为什么? 3.Supervisor的作用是什么? 4.Topology与Worker之间的关系是什么? 5.Nimbus和Supervisor之间的所有协调工作有master来完成,还是Zookeeper集群完成? 6.storm稳定的原因是什么? 7.如何运行Topology? strom jar all-your-code.jar backtype.storm.MyT…
本文翻译自<Getting Started With Storm>译者:吴京润    编辑:郭蕾 方腾飞 本书的译文仅限于学习和研究之用,没有原作者和译者的授权不能用于商业用途. 译者序 Storm入门终于翻译完了.首先感谢并发编程网同意本人在网站上首发本书译文,同时还要感谢并发编程网的各位大牛们的耐心帮助.这是本人翻译的第一本书,其中必有各种不足请诸位读者朋友不吝斧正. 译完此书之后,我已经忘记了是如何知道的Storm这个工具了.本人读过的所有技术书籍大部分都是在地铁上完成的,现在已经成了习…
自己的思考: 1.接收任务到任务的分发和协调   nimbus.supervisor.zookeeper 2.高容错性                            各个组件都是无状态的,状态要自己去处理 3.消息                                 消息在流式框架的作用和可靠性处理,消息可靠处理的原理 4.事务消息                            1.finishbatch    2.commit的强顺序性   3.事务性spout分为…
一 storm 相关术语 . Nimbus storm 集群主节点,负责资源分配和任务调度.(相当于namenode) . supervisor storm集群工作节点,接受Nimbu分配任务,管理worker .worker supervisor 下的工作进程,具体任务执行,一个worker通常对应一个jvm task worker下的工作线程,.8版本之后表示逻辑线程. topology 实时计算逻辑,计算拓扑,由spout 和bolt 组成的图形结构 .spout storm 编程模型中的…
 [本篇文章主要是通过一个单词计数的案例学习,来加深对storm的基本概念的理解以及基本的开发流程和如何提交并运行一个拓扑] 单词计数拓扑WordCountTopology实现的基本功能就是不停地读入一个个句子,最后输出每个单词和数目并在终端不断的更新结果,拓扑的数据流如下: 语句输入Spout:  从数据源不停地读入数据,并生成一个个句子,输出的tuple格式:{"sentence":"hello world"} 语句分割Bolt: 将一个句子分割成一个个单词,输…
并行度 在Storm集群中真正运行Topology的主要有三个实体:worker.executor.task,下图是可以表示他们之间的关系. 数据流模型 对于一个Spout或Bolt,都会有多个task线程来运行,那么如何在两个组件(Spout和Bolt)之间发送tuple元组呢?Storm提供了若干种数据流分发(Stream Grouping)策略用来解决这一问题。在Topology定义时,需要为每个Bolt指定接收什么样的Stream作为其输入(注:Spout并不需要接收Stream,只会发…
基础 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集群和Ha…
刚刚接触storm 对于滑动窗口的topN复杂模型有一些不理解,通过阅读其他的博客发现有两篇关于topN的非滑动窗口的介绍.然后转载过来. 下面是第一种: Storm的另一种常见模式是对流式数据进行所谓“streaming top N”的计算,它的特点是持续的在内存中按照某个统计指标(如出现次数)计算TOP N,然后每隔一定时间间隔输出实时计算后的TOP N结果. 流式数据的TOP N计算的应用场景很多,例如计算twitter上最近一段时间内的热门话题.热门点击图片等等. 下面结合Storm-S…
Storm Trident的核心数据模型是一批一批被处理的“流”,“流”在集群的分区在集群的节点上,对“流”的操作也是并行的在每个分区上进行. Trident有五种对“流”的操作: 1.      不需要网络传输的本地批次运算 2.      需要网络传输的“重分布”操作,不改变数据的内容 3.      聚合操作,网络传输是该操作的一部分 4.      “流”分组(grouby)操作 5.      合并和关联操作 批次本地操作: 批次本地操作不需要网络传输,本格分区(partion)的运算…
matadata: hadoop a spark a hive a hbase a tachyon a storm a redis a 自定义分组 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.had…