storm记录--4-- Storm适用场景

Storm适用场景

  1. 流聚合:

    流聚合就是把两个或多个数据流聚合成一个数据流 -- 基于一些共同的tuple字段。

    builder.setBolt(5,new MyJoiner(),parallelism)

    .fieldsGrouping(1,new Fields("joinfield1","joinfield2"))

    .fieldsGrouping(2,new Fields("joinfield1","joinfield2"))

    .fieldsGrouping(3,new Fields("joinfield1","joinfield2"))

  2. 批处理:

    有时候为了性能或者一些别的原因,你可能想把一组tuple一起处理,而不是一个一个单独处理。

  3. BasicBolt:

    a、读一个输入tuple;

    b、根据这个输入tuple发射一个或者多个tuple;

    c、在execute的方法的最后ack那个输入tuple

    遵循这类模式的bolt一般是函数或者是过滤器,这种模式太常见,storm为这类模式单独封装了一个接口:IbasicBolt。

  4. 内存内缓存 + Fields grouping组合

    在bolt的内存里面缓存一些东西非常常见。缓存在和fields grouping结合起来之后就更有用了。比如,你有一个bolt把短链接变成长链接(bit.ly,t.co之类的)。你可以把短链接到长链接的对应关系利用LRU算分缓存在内存里面以避免重复计算。比如组件一发射短链接,组件二把短链接转化成长链接并缓存在内存里面。看一下下面两段代码有什么不一样:

    builder.setBolt(2,new ExpandUrl(),parallelism).shuffleGrouping(1);

    builder.setBolt(2,new ExpandUrl(),parallelism).fieldsGrouping(1,new Fields("url"));

  5. 计算top N

    比如你有一个bolt发射这样的tuple:"value","count"并且你想一个bolt基于这些信息算出top N的tuple。最简单的办法是有一个bolt可以做一个全局的grouping的动作并且在内存里面保持着top N的值。

    这个方式对于大数据量的流显然是没有扩展性的,因为所有的数据会被发到同一台机器。一个更好的方法是在多台机器上面并行的计算这个流每一部分的top N,然后再由一个bolt合并这些机器上面所算出来的top N以算出最后的top N,代码大概是这样的:

    builder.setBolt(2,new RankObjects(),parallellism).fieldsGrouping(1,new Fields("value"));

    builder.setBolt(3,new MergeObjects()).globalGrouping(2);

    这个模式之所以可以成功是因为第一个bolt的fieldsgrouping使得这种并行算法在语义上是正确的。

  6. 用TimeCacheMap来高效地保存一个最近被更新的对象的缓存:

    有时候你想在内存里面保存一些最近活跃的对象,以及那些不再活跃的对象。TimeCacheMap是一个非常高效地数据结构,它提供了一些callback函数使得我们在对象不再活跃的时候我们可以做一些事情。

  7. 分布式RPC:CoordinatedBolt和KeyedFairBolt:

    用storm做分布式RPC应用的时候有两种比较常见的模式:它们被封装在CoordinatedBolt和KeyedFairBolt里面。

    CoordinatedBolt包装你的bolt,并且确定什么时候你的bolt已经接收到所有的tuple,它主要使用Direct Stream来做这个。

    KeyedFairBolt同样包装你的bolt并且保证你的topology同时处理多个DRPC调用,而不是串行的一次只执行一个。

时间: 2024-08-04 11:41:52

storm记录--4-- Storm适用场景的相关文章

storm记录--5-- Storm集群安装

以下是依次需要完成的安装步骤 一.安装JDK1.6 二.安装Zookeeper 三.安装zeromq-2.1.7 四.安装jzmq 五.安装Python-2.7.2 六.安装unzip 七.安装Storm 一.下载并安装JDK1.6 并设置环境变量,如: export JAVA_HOME=/opt/java6 export PATH=$PATH:$JAVA_HOME/bin 运行java.javac命令,测试java正常安装. 二.安装zookeeper 简易安装:下载zookeeper-3.4

Storm入门(Storm程序)

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

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

本博文的主要内容有 .Storm的单机模式安装 .Storm的分布式安装(3节点)   .No space left on device .storm工程的eclipse的java编写 http://storm.apache.org/ 分布式的一个计算系统,但是跟mr不一样,就是实时的,实时的跟Mr离线批处理不一样. 离线mr主要是做数据挖掘.数据分析.数据统计和br分析. 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

Storm 起步 Zookeeper Storm 单机部署

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

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构(转)

转自http://www.php1.cn/Content/DanBiao_60_YiJiLuDengDaShuJuChangJingDe_MySQL_YouHuaHeYunWeiZhiDao_%7C_GaoKeYongJiaGou.html, 更多详细资料请参看原文 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据存储平台建设和架构设计.前新浪高

storm记录--2-- Storm是什么

Storm是什么: 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义.我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美.对比Hadoop的批处理,Storm是个实时的.分布式以及具备高容错的计算系统.同Hadoop一样Storm也可以处理大批量的数据,然而Storm在保证高可靠性的前提下还可

storm记录--1-- 实时计算系统

实时计算系统 实时计算场景: 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高. 举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来.点击.购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了. 再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是却发现系统在不遗余力地给他推荐袜子.鞋子,根本对他今天寻找泳

storm记录--5-- Storm学习的HelloWorld

Storm学习的HelloWorld 1.下载Storm-start(https://github.com/nathanmarz/storm-starter/archive/master.zip) 2.进入下载目录,对zip文件解压 3.进入解压后的文件目录,修改m2-pom.xml(将twitter4j-core和twitter4j-stream替换为下面的部分) <dependency> <groupId>org.twitter4j</groupId> <ar