Storm基本原理

原文地址:http://storm.apache.org/documentation/Rationale.html



过去的十年见证了数据处理领域的一次革命。MapReduce,Hadoop以及其它相关的技术使得我们可以存储与处理的数据达到了过去想都不敢想的量级。不幸的是,这些数据处理技术并不能用于实时系统。本身这些技术也不是为了用于实时系统而生的。我们也没有任何方式可以将Hadoop改造以用于实时系统;实时数据处理与批处理截然不同。

然而大规模实时数据处理的需求与日俱增,缺少一个“实时的Hadoop”已经成为数据处理领域最大的缺憾。

Storm填补了这个缺憾。

在Storm出现以前,通常你需要手工建立一个队列节点与工作节点的网络来进行实时数据处理。工作节点处理队列中的消息,更新数据库,发送消息到另一个队列以进行进一步的处理。这样的方式有许多问题:

  1. 编码枯燥。你需要花费很多时间去做配置,消息要发送到哪,怎么部署队列节点,怎么部署工作节点。而你真正关心的实时处理逻辑只占你代码的一小部分。
  2. 系统脆弱。容错性太差,你需要自己去注意每一个队列节点和工作节点的状态。
  3. 不易扩展。当单个节点的消息吞吐量过高时,你需要对消息进行切分。对于其他工作节点则需要进行重新配置,这样才能将消息发送给新的节点。其中引入的节点变更都有可能失败。

尽管在处理大量消息时,队列节点与工作节点这样的处理方式运转得不是太好,但消息处理无疑是实时计算的基本范式。问题是应该怎么样才能让消息处理可以做到不丢数据,可以处理超大规模的数据,并且可以很简单的来使用和运维?

Storm可以解决这些问题。

Storm的重要性

Storm暴露了一系列的原语用于实时计算。就像MapReduce极大的简化了并行批处理程序的编写,Storm的原语也极大的简化了并行实时计算程序的编写。

Storm的关键特性:

  1. 使用场景非常广泛。Storm可以用于处理消息,更新数据库(流式处理),对数据流进行连续查询并将结果流式的返回给客户端(连续计算),分布式RPC等等。少量的原语满足了大量的使用需求。
  2. 扩展性。Storm可以扩展到每秒钟可处理大量的消息。要扩展一个拓扑,你只需要添加机器并修改拓扑的设置就可以。作为例子,Storm的一个初始应用,在拥有10个节点的集群上面,每秒钟可以处理1,000,000条消息,其中还包括了每秒钟几百次的数据库访问。通过使用ZooKeeper,Storm的集群可以扩展到一个更大的规模。
  3. 可靠性。一个实时系统必须能够保证所有的数据都被成功处理,如果无法保证将会限制它的使用场景。Storm可以保证每一条消息都被处理。这是Storm与其他系统,比如S4,最大的不同。
  4. 鲁棒性。Hadoop是出了名的难管理,而Storm不一样。让用户尽可能不费力气的来管理Storm集群是Storm项目的一个目标。
  5. 容错性。当计算过程中发生了故障,如果有必要的话Storm会重新分配任务。Storm会确保计算任务一直进行下去,除非你去终止它。
  6. 编程语言无关性。拥有鲁棒性与扩展性的实时处理系统不应该局限在单一的平台上。可以使用任何的语言来定义Storm的拓扑逻辑和组件,这使得几乎所有人都可以使用Storm。
时间: 2024-11-10 01:26:38

Storm基本原理的相关文章

Storm基本原理概念及基本使用

1. 背景介绍 1.1 离线计算是什么 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示: 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据 1.2 流式计算是什么 流式计算:数据实时产生.数据实时传输.数据实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存.持久化存储(mysql) 一句话总结:将源源不断产生的数据实时

apache storm基本原理及使用总结

什么是Apache Storm Apache Storm是一个分布式实时大数据处理系统.Storm设计用于在容错和水平可扩展方法中处理大量数据.它是一个流数据框架,具有最高的摄取率.虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态.通过Storm可以并行地对实时数据执行各种操作.Storm易于部署和操作,并且它可以保证每个消息将通过拓扑至少处理一次. Apache Storm核心概念 Apache Storm从一端读取??实时数据的原始流,并将其传递通过一

Storm简介(转载自淘宝,加了点个人理解)

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

storm学习之入门篇(一)

海量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时计算,因为它天然就是为批处理而生的,这也是业界一致的共识.否则最近这两年也不会有s4,storm,puma这些实时计算系统如雨后春笋般冒出来.先抛开s4,storm,puma这些系统不谈,我们首先来看一下,如果让我们自己设计一个实时计算系统,我们要解决哪些问题: 1.低延迟.都说了是实时计算系统了,延迟是一定要低的

storm详细介绍

Storm应用场景 Twitter列举了Storm的三大类应用: 1. 信息流处理{Stream processing}Storm可用来实时处理新数据和更新数据库,兼具容错性和可扩展性. 2. 连续计算{Continuous computation}Storm可进行连续查询并把结果即时反馈给客户端.比如把Twitter上的热门话题发送到浏览器中. 3. 分布式远程程序调用{Distributed RPC} Storm可用来并行处理密集查询.Storm的拓扑结构是一个等待调用信息的分布函数,当它收

流式 storm介绍

Storm是什么 如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统.按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义.我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美.同样,storm也为实时计算提供了一些简单优美的原语.我们会在第三节中详细介绍. 我们来看一下storm的适用场景. 流数据处理.Storm可以用来处理源源不断流进来的消息,

storm简介.docx

资料来源:http://www.searchtb.com/2012/09/introduction-to-storm.html Storm背景 全量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的使用.但是,hadoop不擅长实时计算,因为它天然就是为批处理而生的,这也是业界一致的共识.否则最近这两年也不会有s4,storm,puma这些实时计算系统如雨后春笋般冒出来啦.先抛开s4,storm,pu

初识Storm

问题导读:1.storm产生的条件是什么?2.storm的什么特性,使其成为不可替代?3.storm用什么来完成工作Topology?4.storm容错的原理是什么? 场景伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来.点击.购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了. 再

Storm 系列(三)Storm 集群部署和配置

Storm 系列(三)Storm 集群部署和配置 本章中主要介绍了 Storm 的部署过程以及相关的配置信息.通过本章内容,帮助读者从零开始搭建一个 Storm 集群.相关的过程和主要的配置选项是 Storm 的运维人员需要重点关注的,对部署和配置选项不感兴趣的读者,可以跳过本章. 在开始 Storm 之旅前,我们先看一下 Storm 部署和配置的相关信息,并提交一个 Topology,了解 Storm 的基本原理.Storm 的部署模式包括单机和集群环境,同时在向 Storm 环境中提交 To