Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:
Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比 Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。
Storm的主要特点如下:
1. 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
2. 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
3. 容错性。Storm会管理工作进程和节点的故障。
4. 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
5. 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
6. 快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。
7. 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。
Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节 点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无 状态的,这样一来它们就变得十分健壮,两者的协调工作是由Apache ZooKeeper来完成的。
Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。在Storm Concepts页面里对这些术语有更详细的描述。
可以和Storm相提并论的系统有Esper、Streambase、HStreaming和Yahoo S4。其中和Storm最接近的就是S4。两者最大的区别在于Storm会保证消息得到处理。这些系统中有的拥有内建数据存储层,这是Storm所没有的,如果需要持久化,可以使用一个类似于Cassandra或Riak这样的外部数据库。
入门的最佳途径是阅读GitHub上的官方《Storm Tutorial》。 其中讨论了多种Storm概念和抽象,提供了范例代码以便你可以运行一个Storm Topology。开发过程中,可以用本地模式来运行Storm,这样就能在本地开发,在进程中测试Topology。一切就绪后,以远程模式运行 Storm,提交用于在集群中运行的Topology。Maven用户可以使用clojars.org提供的Storm依赖,地址是 http://clojars.org/repo。
要运行Storm集群,你需要Apache Zookeeper、ØMQ、JZMQ、Java 6和Python 2.6.6。ZooKeeper用于管理集群中的不同组件,ØMQ是内部消息系统,JZMQ是ØMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群。
分享到:
相关推荐
实时计算:Apache Storm:Apache Storm在大数据生态系统中的角色.docx
Storm官方网站有段简介 ...Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。Storm简单,可以使用任何编程语言。
Apache Storm是一个开源的分布式实时计算系统,它能够处理无限的数据流,确保每个事件都能被正确处理,是大数据领域中的重要工具之一。 1. **Storm简介**:Storm的核心理念是提供一个可靠的、低延迟的实时数据处理...
《Storm实战:构建大数据实时计算 》是一本系统并且具有实践指导意义的Storm工具书和参考书,对Storm整个技术体系进行了全面的讲解,不仅包括对基本概念、特性的介绍,也涵盖了一些原理说明。 实战性很强,各章节都...
史上最全大数据技术全套教程,包括: 分布式存储系统 大数据基础 大数据处理框架 大数据管理与监控 实时计算 数据仓库 数据分析工具 数据湖 数据集成工具 消息队列 等流行技术的系列教程
它是一款分布式实时计算系统,能够处理海量流式数据,提供低延迟和高可靠性。 2. **Storm关键技术** - **系统架构**:Storm由调度系统和通信模型构成。调度系统负责任务分配,确保容错和负载均衡;通信模型则处理...
实时计算框架负责接收从消息队列等数据源推送来的实时数据,并通过流处理平台如Storm或BDMCEP进行快速处理。这些流处理平台通常具备高吞吐量和低延迟的特点,能够实时地清洗、统计和分析数据。处理结果可以输出到...
《Storm实战:构建大数据实时计算 》一共分为10章:第1章全面介绍了Storm的特性、能解决什么问题,以及和其他流计算系统的对比;第2章通过实际运行一个简单的例子,以及介绍本地环境和集群环境的搭建,让读者对...
《Storm实战构建大数据实时计算》是一本专注于大数据领域实时处理技术的专著,主要围绕Apache Storm这一开源流处理系统展开。这本书深入浅出地讲解了如何利用Storm进行实时数据流的处理,为读者揭示了大数据实时计算...
Apache Storm 是一个免费开源的分布式实时计算系统。它提供了简单且强大的API,可以用来处理无界数据流,非常适合进行实时分析、在线机器学习、持续计算、分布式远程调用等场景。Storm的设计目标是提供与Hadoop类似...
在物联网系统中,实时处理大量涌入的数据变得至关重要,Storm能够有效地处理这些数据流,进行实时分析和决策。 Storm的主要特点包括: 1. **分布式**:Storm可以通过增加机器和提高并发度来实现水平扩展,以处理更...
Storm是一个开源的分布式实时计算系统,由Twitter开发并贡献给了Apache基金会。它允许开发者持续处理无限的数据流,提供低延迟和高吞吐量的实时数据处理能力。在大数据领域,Storm被视为实时计算领域的Hadoop,为...
该系统的数据来源于 6 万多辆出租车、公交车上安装的 GPS 定位仪,每天 24 小时产生大量数据,使用 Storm 实时流处理平台来处理这些数据,并将其存储在 Hadoop 分布式计算系统中。 系统功能和亮点: 1. 实时计算出...
《大数据技术丛书:Storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同...
从实时流处理系统Storm的调度优化出发,将这些优化方法分为四类,并详细阐述各类中具有一定代表性的方法,分析其优缺点以及适用的场景。最后,讨论了在日益发展的新环境下,Storm系统的调度优化相关研究未来可能存在...
Storm 是一个分布式实时计算系统,主要用于处理大规模数据流。它的核心组件包括Spout和Bolt,分别负责数据的输入和处理。下面是对 Storm 的一个概述,从基础知识到实践应用。 Storm 组件 Storm 的核心组件包括: ...
Apache Storm作为一款分布式实时计算系统,为处理海量数据流提供了强大支持。而Kafka作为高效的消息队列,常被用作数据源,两者结合可以构建出强大的实时数据处理管道。本篇将深入探讨storm-kafka的集成与应用。 ...
【Storm流计算项目:1号店电商实时数据分析系统】是一个基于Storm技术的实时数据分析系统,主要目的是对电商平台的销售数据进行实时处理和展示。在该项目的第二个阶段,即【项目2-省份销售排行】,主要任务是实现...