Storm 教程
Storm 最初是由Nathan Marz和BackType 的团队创建的。BackType 是一家社交分析公司。后来,Storm 被Twitter收购并开源。在很短的时间内,Apache Storm 成为分布式实时处理系统的标准,它可以让您处理大量数据,类似于 Hadoop。Apache Storm 是用 Java 和 Clojure 编写的。它继续成为实时分析领域的领导者。本教程将探讨 Apache Storm 的原理、分布式消息传递、安装、创建 Storm 拓扑并将它们部署到 Storm 集群、Trident 的工作流、实时应用程序,最后以一些有用的示例结束。
什么是 Apache Storm?
Apache Storm 是一个分布式实时大数据处理系统。 Storm 旨在以容错和水平可扩展的方法处理大量数据。它是一个流数据框架,具有最高摄取率的能力。虽然 Storm 是无状态的,但它通过 Apache ZooKeeper 管理分布式环境和集群状态。它很简单,您可以并行执行对实时数据的各种操作。
Apache Storm 将继续成为实时数据分析领域的领导者。 Storm 易于设置、操作,并保证每条消息至少通过拓扑处理一次。
Apache Storm 与 Hadoop
基本上 Hadoop 和 Storm 框架用于分析大数据。两者相辅相成,又在某些方面有所不同。 Apache Storm 负责除持久化之外的所有操作,而 Hadoop 则擅长所有方面,但在实时计算方面滞后。下表对比了 Storm 和 Hadoop 的属性。
Storm |
Hadoop |
实时流处理 |
批处理 |
无状态 |
有状态 |
具有基于 ZooKeeper 的协调的主/从架构。主节点被称为nimbus,而从节点被称为监督者。 |
带有/不带有基于 ZooKeeper 的协调的主从架构。主节点是作业跟踪器,从节点是任务跟踪器。 |
Storm 流处理可以在集群上每秒访问数万条消息。 |
Hadoop 分布式文件系统 (HDFS) 使用 MapReduce 框架来处理需要几分钟或几小时的海量数据。 |
Storm 拓扑运行直到关闭用户或意外的不可恢复的故障。 |
MapReduce 作业按顺序执行并最终完成。 |
都是分布式和容错的 |
如果 nimbus/supervisor 死掉了,重新启动会使它从停止的地方继续,因此没有任何影响。 |
如果 JobTracker 挂掉,所有正在运行的作业都会丢失。 |
Apache Storm 的用例
Apache Storm 以实时大数据流处理而闻名。出于这个原因,大多数公司都将 Storm 作为其系统的一个组成部分。一些值得注意的例子如下-
Twitter-Twitter 正在将 Apache Storm 用于其"发布商分析产品"范围。"发布商分析产品"处理 Twitter 平台中的每条推文和点击。 Apache Storm 与 Twitter 基础架构深度集成。
NaviSite-NaviSite 使用 Storm 进行事件日志监控/审计系统。系统中产生的每一个日志都会经过Storm。 Storm 将根据配置的正则表达式集检查消息,如果匹配,则该特定消息将保存到数据库中。
Wego-Wego 是位于新加坡的旅游元搜索引擎。旅行相关数据来自世界各地的许多来源,时间各不相同。 Storm 帮助 Wego 搜索实时数据、解决并发问题并为最终用户找到最佳匹配。
Apache Storm 的优势
这里列出了 Apache Storm 提供的好处-
Storm 是开源、强大且用户友好的。它既可用于小型公司,也可用于大型公司。
Storm 具有容错、灵活、可靠的特点,并且支持任何编程语言。
允许实时流处理。
Storm 的速度快得令人难以置信,因为它具有强大的数据处理能力。
即使在负载增加的情况下,Storm 也可以通过线性添加资源来保持性能。它具有高度可扩展性。
Storm 在数秒或数分钟内执行数据刷新和端到端交付响应,具体取决于问题。它的延迟非常低。
Storm 拥有运营智能。
即使集群中的任何连接节点死亡或消息丢失,Storm 也能提供有保障的数据处理。