Apache Storm

来自站长百科
跳转至: 导航、​ 搜索

Apache Storm 是一个免费的开源分布式实时计算系统,它使处理无限数据流变得可靠且容易,就像Apache Hadoop 在批处理方面的作用一样,但是可以进行实时处理。Apache Storm 的设计简单,可以与任何编程语言一起使用,并且非常有趣!

Apache Storm 适用于多种用例,包括实时分析、在线机器学习、持续计算、分布式 RPC、ETL 等。它的处理速度非常快:基准测试显示,每个节点每秒可以处理超过 100 万个元组。此外,Apache Storm 具有可扩展性和容错性,能够确保数据得到处理,并且易于设置和操作。

核心架构[ ]

1、Nimbus

Nimbus是Storm的主节点,它负责资源分配和任务调度。在一个Storm集群中,只有一个Nimbus节点。

2、Supervisor

Supervisor是Storm的工作节点,它负责接收Nimbus分配的任务并管理所有的Worker进程。一个Supervisor节点可以包含多个Worker进程。

3、Worker

Worker是工作进程,每个Worker进程都包含多个Task。

4、Task

Task是任务,在Storm集群中,每个Spout和Bolt都由若干个任务来执行。每个任务都与一个执行线程相对应。

5、Topology

Topology是计算拓扑,它是对实时计算应用逻辑的封装。与MapReduce的任务(Job)类似,区别在于MapReduce的一个Job在得到结果后会结束,而拓扑会一直在集群中运行,直到你手动终止它。拓扑也可以理解为由一系列通过数据流(Stream Grouping)相互关联的Spout和Bolt组成的拓扑结构。

6、Stream

Stream是数据流,是Storm中最核心的抽象概念。一个数据流指的是在分布式环境中并行创建、处理的一组元组(tuple)的无界序列。数据流可以通过一种能够描述数据流中元组域(fields)的模式来定义。

7、Spout

Spout是数据源,它是拓扑中数据流的起点。通常,Spout会从一个外部数据源读取元组并将它们发送到拓扑中。根据需求的不同,Spout可以被定义为可靠的或不可靠的数据源。可靠的Spout能够在其发送的元组处理失败时重新发送该元组,以确保所有元组都能得到正确处理;相反,不可靠的Spout在元组发送后不会进行任何其他处理。一个Spout可以发送多个数据流。

8、Bolt

Bolt是拓扑中完成所有数据处理的组件。通过数据过滤、函数处理、聚合、联结、数据库交互等功能,Bolt几乎可以完成任何类型的数据处理需求。一个简单的数据流转换可以由一个Bolt实现,而更复杂的数据流变换通常需要使用多个Bolt并通过多个步骤完成。

9、Stream grouping

Stream grouping是为拓扑中的每个Bolt确定输入数据流的方式。数据流分组定义了如何在Bolt的不同任务之间划分数据流。Storm提供了八种内置的数据流分组方式。

10、Reliability

Reliability是可靠性。Storm可以通过拓扑确保每个发送的元组都能得到正确处理。通过跟踪由Spout发出的每个元组构成的元组树,可以确定元组是否已经完成处理。每个拓扑都有一个“消息延时”参数,如果Storm在延时时间内没有检测到元组是否处理完成,就会将该元组标记为处理失败,并在稍后重新发送该元组。

优势[ ]

  • Storm是开源的,强大的,用户友好的。它可以用于小公司和大公司。
  • Storm是容错的,灵活的,可靠的,并且支持任何编程语言。
  • 允许实时流处理。
  • Storm是令人难以置信的快,因为它具有巨大的处理数据的力量。
  • Storm可以通过线性增加资源来保持性能,即使在负载增加的情况下。它是高度可扩展的。
  • Storm在几秒钟或几分钟内执行数据刷新和端到端传送响应取决于问题。它具有非常低的延迟。
  • Storm有操作智能。
  • Storm提供保证的数据处理,即使群集中的任何连接的节点死或消息丢失。

示例[ ]

  • Twitter - Twitter正在使用Apache Storm作为其“发布商分析产品”。 “发布商分析产品”处理Twitter平台中的每个tweets和点击。 Apache Storm与Twitter基础架构深度集成。
  • NaviSite - NaviSite正在使用Storm进行事件日志监控/审计系统。系统中生成的每个日志都将通过Storm。Storm将根据配置的正则表达式集检查消息,如果存在匹配,那么该特定消息将保存到数据库。
  • Wego - Wego是位于新加坡的旅行元搜索引擎。旅行相关数据来自世界各地的许多来源,时间不同。Storm帮助Wego搜索实时数据,解决并发问题,并为最终用户找到最佳匹配。

相关条目[ ]