【原】Storm及特点

Storm入门教程

1. Storm基础

Storm

Storm主要特点

Storm基本概念

Storm调度器

Storm配置

Guaranteeing Message Processing(消息处理保障机制)

Daemon Fault Tolerance(守护线程容错机制)

理解Storm拓扑的并行

Tutorial

Local模式

在生产环境中运行Topologies



Storm

Storm是一个免费开源的分布式实时计算系统。Storm令无边界的流数据计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。
Storm常用在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等场景中。Storm处理速度快,单节点每秒可处理百万级元组的数据;同时,Storm是可扩展的、有容错性,容易部署与操作。
Storm已整合现有的消息队列和数据库系统。

Storm主要特点

  • 简单的API接口

Storm的API简单且容易使用。当编写Storm程序时,处理的是元组组成的流数据,一个元组是一组值的集合。元组包含任何对象类型,当使用自定义数据类型时,只需要简单的使用storm的序列化器注册一下即可。

Storm提供了三种抽象的组件,分别是Spouts、Bolts和Topologies。Spouts组件是负责接收或生产处理所需的数据源。通常spout从消息队列中读取数据,比如Kestrel、RabbitMQ或是Kafka,也可以从其他地方生产自己需要的数据源,比如调用Twitter streaming API。Spout已经和大部分的消息队列集成。

Bolts处理接收到的数据流,生产出新的数据流提供给其他组件调用。大部分的计算逻辑都由bolt处理。比如函数处理、过滤器、join、聚集、甚至是数据库调用等等。

一个Topologie组件就是由多个spout和bolt组成的网络结构。网络中的每一个边线代表一个bolt组件订阅的数据流,这个数据流可能来至spout组件,也可能来至其他bolt组件。一个Topology组件就是复杂的流处理计算过程。Topology部署在服务器上就会一直运行。
Storm提供了一种本地运行模式,来模拟集群处理,这对开发和测试非常有用。客户端使用strom命令提交一个Topology到集群上运行。

  • 可扩展性

Storm topologies先天并行计算并且运行在集群中。不同的topology的部分能调整它们的并行度,如client可通过“rebalance”命令及时调整正在运行的topologies的并行度。

先天并行计算是指它在低延迟的前提下保证了高吞吐量。如,在单台节点(处理器:2x Intel E5645@2.4Ghz,内存:24GB)上每秒处理百万级消息,消息约为100字节。

  • 容错性

Storm有容错机制,当工作节点宕了,storm会尝试重启。如果节点宕机,会重启另启动一个节点。

Storm的守护进程Nimbus和Supervisors都是无状态的,如果它们死掉,那么它们将会重启就像什么也没发生。也就就是说,即使你用kill -9强制杀死这两个进程那么也不会影响集群的正常运行。

  • 无数据丢失

Storm确保每个元组被处理。Storm的机制之一:能有效地记录元组的lineage。

Storm的抽象组件确保了数据至少处理一次,即使使用消息队列系统失败时,也能确保消息被处理。

通过Storm的抽象组件Trident能确保消息只被处理一次。

  • 支持多种编程语言

Storm从一开始就设计为能被各种编程语言使用。Storm用Thrift定义和提交topologies。由于Thrift能被任何一种编程语言使用,因此,topologies也能被任何一种编程语言定义和使用。

同样,spouts和bolts能用任何一种语言定义。不是基于JVM实现的Storm最贱spouts和bolts可以通过JSON协议通信。

  • 容易部署和操作
    Storm集群易部署,要求配置最少就可以启动并运行。

  • 免费开源

Storm遵循开源协议Apache License, Version 2.0
Storm有庞大的生态系统库和工具:
1.Spouts:spouts已经和常用消息队列系统JMS、Kafka、Redis pub/sub等进行了整合。
2.storm-state:storm-state使计算中的内存状态易管理和可靠(通过分布式文件系统持久化)。
3.数据库集成:bolts已整个不同的数据库如MongoDB,RDBM,Cassandra等。
4.其他功能。

posted @ 2016-10-29 14:05  一路向前走  阅读(2138)  评论(0编辑  收藏  举报