Storm 简介
1. 什么是Apache Storm?
Apache Storm是一个分布式实时大数据处理系统。Storm设计用于以容错和水平可伸缩方法处理大量数据。这是一个流媒体数据框架,具有最高的摄取率。虽然Storm是无状态的,但它通过Apache ZooKeeper管理分布式环境和集群状态。这很简单,您可以并行执行各种对实时数据的操作。
Apache Storm继续成为实时数据分析的领导者。Storm很容易设置,操作,并且保证每个消息至少通过拓扑结构处理一次。
2. Apache Storm vs Hadoop
基本上Hadoop和Storm框架用于分析大数据。它们两者相辅相成,在某些方面有所不同。Apache Storm执行除持久性以外的所有操作,而Hadoop擅长于一切,但缺乏实时计算。下表比较了Storm和Hadoop的属性。
Storm | Hadoop |
---|---|
Real-time stream processing | Batch processing |
Stateless | Stateful |
Master/Slave architecture with ZooKeeper based coordination. The master node is called as nimbus and slaves are supervisors. | Master-slave architecture with/without ZooKeeper based coordination. Master node is job tracker and slave node is task tracker. |
A Storm streaming process can access tens of thousands messages per second on cluster. | Hadoop Distributed File System (HDFS) uses MapReduce framework to process vast amount of data that takes minutes or hours. |
Storm topology runs until shutdown by the user or an unexpected unrecoverable failure. | MapReduce jobs are executed in a sequential order and completed eventually. |
Both are distributed and fault-tolerant | |
If nimbus / supervisor dies, restarting makes it continue from where it stopped, hence nothing gets affected. | If the JobTracker dies, all the running jobs are lost. |
3. Apache Storm的使用案例
Apache Storm对于实时大数据流处理非常有名。出于这个原因,大多数公司都将Storm作为其系统的一个组成部分。一些值得注意的例子如下 -
Twitter - Twitter正在将Apache Storm用于其“发布商分析产品”系列。 “发布商分析产品”在Twitter平台中处理每个推文和点击。Apache Storm与Twitter基础架构深度整合。
NaviSite - NaviSite将Storm用于事件日志监视/审计系统。 系统中生成的每个日志都将通过Storm。Storm将根据配置的正则表达式集检查消息,如果匹配,那么该特定消息将被保存到数据库中。
Wego - Wego是位于新加坡的旅行元搜索引擎。 旅游相关数据来自世界各地不同时间的许多来源。Storm帮助Wego搜索实时数据,解决并发问题并找到最终用户的最佳匹配。
4. Apache Storm的好处
这里列出了Apache Storm提供的好处:
- Storm是开源的,强大的和用户友好的。它可以用于小公司以及大公司。
- Storm容错,灵活,可靠,并支持任何编程语言。
- 允许实时流处理。
- Storm的速度令人难以置信,因为它具有处理数据的巨大能力。
- 通过线性增加资源,Storm即使在负载增加的情况下也能保持性能。它具有高度的可扩展性。
- Storm在数秒或数分钟内执行数据刷新和端到端交付响应取决于问题。它具有非常低的延迟。
- Storm拥有运营智能。
- 即使群集中的任何连接节点死亡或消息丢失,Storm仍可提供有保证的数据处理。
下一章:Storm 核心概念
Apache Storm从一端读取实时数据的原始流,并通过一系列小处理单元传递它,并在另一端输出处理/有用的信息。下图描述了Apache Storm的核心概念。现在让我们仔细看看Apache Storm的组件组件描 ...