storm - 简介
twitter列举了storm的三大作用领域:
1.信息流处理(Stream Processing)
Storm可以用来实时处理新数据和更新数据库,兼具容错性和可扩展性,它可以用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。
2.连续计算(Continuous Computation)
Storm可以进行连续查询并把结果即时反馈给客户,比如将Twitter上的热门话题发送到客户端。
3.分布式远程过程调用(Distributed RPC)
除此之外,Storm也被广泛用于以下方面:
精确的广告推送 在用户浏览产品的时候,将浏览记录实时性的搜集,发送到Bolt,由Bolt来根据用户的账户信息(如果有的话)完成产品的分类统计,产品的相关性查询等逻辑计算之后,将计算结果推送给用户;
实时日志的处理 Storm可以和一个分布式存储结合起来,实时性的从多个数据源发送数据到处理逻辑Bolts,Bolts完成一些逻辑处理之后,交给分布式存储框架进行存储,此时,Spout可以是多个;
二 Storm 集群的基本组件
Storm是一个分布式、高容错的实时计算系统,Storm对于实时计算的意义相当于Hadoop对于批处理的意义。Hadoop提供了Map和Reduce原语,使对数据进行批处理变的非常简单和优美。同样,Storm也对数据的实时计算提供了简单Spout和Bolt原语。
Storm 集群表面上看和hadoop集群非常像,但是在Hadoop上面运行的是MapReduce的Job, 而在Storm上面运行的是Topology(拓扑),它们是非常不一样的 —关键的区别是: 一个MapReduce Job最终会结束, 而一个Topology永远运行(除非显式的杀掉它)。
Storm VS MapReduce
通常Spout会从外部数据源(队列、数据库等)读取数据,然后封装成Tuple形式,之后发送到Stream中。Spout是一个主动的角色,在接口内部有个nextTuple函数,Storm框架会不停的调用该函数。
三 数据模型
storm使用tuple来作为它的数据模型。每个tuple是一堆值,每个值有一个名字,并且每个值可以是任何类型, 一个tuple可以看作一个没有方法的java对象。总体来看,storm支持所有的基本类型、字符串以及字节数组作为tuple的值类型。也可以使用自己定义的类型来作为值类型, 只要实现对应的序列化器(serializer)。
一个Tuple代表数据流中的一个基本的处理单元,例如一条cookie日志,它可以包含多个Field,每个Field表示一个属性。
四 流分组策略(Stream grouping)
流分组策略告诉topology如何在两个组件之间发送tuple。 要记住, spouts和bolts以很多task的形式在topology里面同步执行。如果从task的粒度来看一个运行的topology, 它应该是这样的:
从task角度来看topology
当Bolt A的一个task要发送一个tuple给Bolt B, 它应该发送给Bolt B的哪个task呢?
stream grouping 专门回答这种问题的。在我们深入研究不同的stream grouping之前, 让我们看一下storm-starter里面的另外一个topology。WordCountTopology读取一些句子, 输出句子里面每个单词出现的次数.
TopologyBuilder builder =newTopologyBuilder();
|
builder.setSpout( 1 ,new RandomSentenceSpout(), 5 );
|
builder.setBolt( 2 ,new SplitSentence(), 8 )
|
.shuffleGrouping( 1 );
|
builder.setBolt( 3 ,new WordCount(), 12 )
|
.fieldsGrouping( 2 ,newFields( "word" ));
|
- 最简单的grouping是shuffle grouping, 它随机发给任何一个task。上面例子里面RandomSentenceSpout和SplitSentence之间用的就是shuffle grouping, shuffle grouping对各个task的tuple分配的比较均匀。
- 一种更有趣的grouping是fields grouping, SplitSentence和WordCount之间使用的就是fields grouping, 这种grouping机制保证相同field值的tuple会去同一个task, 这对于WordCount来说非常关键,如果同一个单词不去同一个task, 那么统计出来的单词次数就不对了。
注:fields grouping是stream合并,是stream聚合以及很多其它场景的基础。在背后呢, fields grouping使用的一致性哈希来分配tuple。
storm - 简介相关推荐
- 流数据分析平台Storm简介
流数据分析平台Storm简介 Storm是一个分布式的.容错的实时流计算系统,可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理.Storm保证 ...
- storm简介(大数据技术)
Apache Storm简介 由 chalex 创建,小路依依 最后一次修改 2016-12-12 什么是Apache Storm? Apache Storm是一个分布式实时大数据处理系统.Storm ...
- 流处理框架Storm简介
转自:http://qing.weibo.com/2294942122/88ca09aa33002dsh.html EMC中国研究院 向东 提起Big Data,人们往往会提起大数据的4个V: Vol ...
- 【Storm】Storm简介及Storm集群的安装部署
1.Storm概述 (1)Storm简介 Storm最早是由BackType公司开发的实时处理系统,底层由Clojure实现.Clojure也是一门基于JVM的高级面向函数式的编程语言.2011年Tw ...
- 大数据组件之Storm简介
简介 Storm是一个开源的分布式实时计算框架. 特点 支持水平横向扩展 高容错性,通过ack机制每个消息都不丢失(好奇该特性如何实现) 处理速度快,每个节点每秒处理超过一百万个元组(tuples) ...
- storm 简介及单机版安装指南
2019独角兽企业重金招聘Python工程师标准>>> 转载:http://www.open-open.com/lib/view/open1374979211233.html 本文翻 ...
- storm简介、原理、概念
1.什么是storm Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop.随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计.推荐系统 ...
- Storm原理与实践--大数据技术栈14
回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Storm! 来自:有米加瓦 一.Storm简介 1. 引例 在介绍Storm之前,我们先看一个日志统计的例子:假如我们想要根据用户的访 ...
- Storm On YARN
1. 背景知识 (1)Storm:一个实时计算框架,与MapReduce离线计算框架互补,分别用于解决不同场景下的问题,Storm的官方网站是:http://storm-project.net/,如果 ...
最新文章
- 全球首个Magic Leap One体验:吓到你不敢进房间
- 整数实现求整数和算法
- Unity TIP4: 带泛型参数的接口注入(interface,generic)
- linux下普通用户如何使用80端口启动程序
- python中的几种copy用法_Python3中copy模块常用功能及其他几种copy方式比较
- AES在线加密解密-附AES128,192,256,CBC,CFB,ECB,OFB,PCBC各种加密
- idea的jsp如何显示语法高亮_如何啃下Python学习中的三块硬骨头?
- 窗口闪退_今天只讲一件事,精雕软件的BUG(进浮雕闪退,笔刷变圈圈等)
- wire 和 reg_Wire和Launchkit开源,水流监控系统以及更多新闻
- Pandas 速查手册中文版
- 【信息系统项目管理师】第十五六章 配置管理和标准化
- Netty学习之读netty权威指南(三)
- BitTorrent DHT 协议中文翻译
- 怎样用计算机做ppt,电脑怎么做ppt(教你几个小技巧做出高大上的ppt)
- Groovy(二)groovy基础
- 简析市场营销中的六大数据科学用例
- z-index什么意思
- Python-pip 安装与使用
- Autoware.auto 毫米波雷达目标检测demo展示
- 利用python画空间分布图