storm简单介绍

一、首页

源地址:http://storm.apache.org/

 

Apache Storm是免费开源的分布式实时计算系统。Storm能够可靠的处理无界数据流,这就使它能够实时处理一些Hadoop批处理的事情。Storm简单,可以使用任何编程语言。

        

Storm可以用于很多方面:实时分析、在线机器学习、持续计算、分布式RPC、ETL等。Storm的速度很快:每秒钟每个节点可以处理一百万条元组;并且是可伸缩的、可容错的,保证数据得到处理,同时易于搭建和操作。

 

 

Storm包含了你已在使用的队列以及数据库技术。Stormtopology可以以任意复杂的方式消耗数据流并处理这些数据流,同时在级联处理之间重新划分这些流。更多可以阅读指导

        

 

二、Integrates

源地址:http://storm.apache.org/about/integrates.html

 

Storm可以和任意队列化系统或者数据库系统集成在一起。 Storm的spout抽象使得集成新队列化系统变得很容易。例如:

1、Kestrel

2、RabbitMQ/AMQP

3、Kafka

4、JMS

5、Amazon Kinesis

 

同样,集成storm与数据库也很简单。简单的打开与数据库的连接,就可以像你平时一样读写。当需要时,storm可以应对并行处理、数据划分、失败重启等。

 

三、simple-api

源地址:http://storm.apache.org/about/simple-api.html

 

Storm API比较简单并且易于利用。 当在Storm上编程时,你可以操纵并传递元组(tuples)流,元组是已经命名好的值列表。元组可以包含任意类型的对象,如果希望使用Storm不知道的类型,简单的方式是可以通过注册这种类型的序列化器的方式进行利用。

 

Storm只有三种抽象: Spouts、bolts以及topologies。 Spout是计算中流的来源。通常spout从队列化的broker中读取数据:例如Kestrel、RabbitMQ、或者Kafka,但是spout也可以产生自己数据流或者从其他的地方(例如Twitter streaming API)读取数据。Spout的实现可以兼容大多数队列化系统。

 

Bolt可以处理任意数量的输入流,并且可以产生任意数量的新输出流。大多数计算逻辑是在bolts中完成的,例如函数、过滤器、流合并、流聚合、连接数据库以及其他业务。

 

Topology是由Spouts以及Bolts组成的网络,网络中的每一个节点都代表一个bolt,bolt既可能订阅其他spout输出流,也可能订阅bolt的输出流。Topology是任意复杂的多级流计算系统。一旦部署好,Topology可以无限运行下去。

 

Storm有一种本地模式:即Storm集群是模拟的进程内方式。这对开发和测试很有用。storm命令行客户端可以用来准备向实际集群提交topology应用。

 

storm-starter项目包含topology例子,用来学习storm基本知识。更多介绍需要阅读tutorial以及documentation

 

 

四、Scalable

源地址:http://storm.apache.org/about/scalable.html

 

Storm topology天生可以并行处理,并且通过机器集群运行。Topology不同的部分可以通过调整他们并行化进行个体的伸缩。“rebalance”命令可以调整飞速运行中topology的并行处理。

 

Storm天生的并行处理机制意味着它可以处理巨大吞吐量的消息,并且延迟很小。 Storm基准是:每个节点每秒钟处理100万条100字节的消息,硬件环境是:

处理器: 2x  Intel  E5645@2.4GHz

内存:24GB

 

五、Fault tolerant

源地址:http://storm.apache.org/about/fault-tolerant.html

 

Storm是可容错的: 当worker死掉时,Storm将自动重启它们。 如果节点死掉了,worker将在另一个节点上重启。

 

Storm daemons(nimbus以及supervisor),设计为无状态并且快速失败的。因此,如果它们死掉了,它们会像什么都没发生一样重启。这就意味着你可以使用kill -9杀掉Storm daemons,而不需要影响集群或者topology的健康状况。

 

Storm's 容错性能的更多介绍在manual

 

六、Guarantees data processing

源地址:http://storm.apache.org/about/guarantees-data-processing.html

 

Storm保证每一个tuple可以完全处理。 Storm's核心机制之一就是跟踪tuple的血统来源,这就保证元组可以以极端有效的方式通过topology。更多介绍请阅读这里

 

Storm's 基本抽象提供至少处理一次的保证,当使用队列化系统时依然可以获得这种保证。 消息只有在处理失败时才会重新处理。

 

使用Trident,这是基于Storm's 基本抽象的更高抽象,你可以获取每一个处理准去的语义。

 

 

七、Use with any language

源地址:http://storm.apache.org/about/multi-language.html

 

Storm从一开始就被设计成可以使用任意编程语言。Storm核心是用来定义和提交topologies的Thrift定义。因为Thrif可以使用任何语言,topologies可以使用任何语言进行定义以及提交。

 

相似的, spouts以及bolts可以使用任何语言定义。non-JVM spouts以及bolts通过JSON-based协议与storm通信。可以选择Ruby、Python、Javascript、Perl以及PHP实现这个协议。

 

storm-starter包含一个topology实例,是使用python实现的一个bolts。

 

 

八、Easy to deploy and operate

源地址:http://storm.apache.org/about/deployment.html

 

Storm 集群易于搭建,需要少量设置和配置就可以运行。 Storm's 简单配置适合产品开发。更多关于Storm cluster搭建的介绍请阅读这里

 

如果你处在EC2上,storm-deploy项目可以通过抓取按键获取提、配置、安装storm集群。

 

另外,一旦部署,storm易于操作。Storm设计鲁棒性很强----集群将保证运行数月或更久。

 

 

九、free-and-open-source

源地址:http://storm.apache.org/about/free-and-open-source.html

 

Apache Storm是免费并且开源的项目,遵守Apache条约-Version2.0,如今正在接受Apache Software Foundation(ASF)的孵化,由Apache孵化器赞助。

        

Storm拥有巨大并且正在扩大的生态圈,这其中包含了大量的库以及工具,可以用来连接以下Storm包含的组件:

1、Spouts: 这些Spouts可以和队列系统集成在一起,例如JMS、Kafka、Redispub/sub等等。

2、storm-state:为了管理计算中的大量内存状态,可靠的方式是采取分布式系统长久运行的方式,而storm-state使得这一切变得容易。

3、数据库集成:bolts可以集成多种数据库:例如MongoDB、RDBMS's、Cassandra等。

4、其他杂项应用

 

Storm文档包含了其他一些与Storm相关的项目,某些可能不在Apache名下。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值