关于 Apache Storm 你需要知道的一切

已发表: 2018-02-20

大数据生产和分析的不断增长不断提出新的挑战,数据科学家和程序员通过不断改进他们开发的应用程序,优雅地从容应对。 一个这样的问题是实时流。 实时数据对企业具有极高的价值,但它有一个时间窗口,在此之后它就会失去价值——如果你愿意的话,还有一个到期日。 如果这个实时数据的价值没有在窗口内实现,就不能从中提取任何有用的信息。 这种实时数据快速而连续地进入,因此称为“流式传输”。

对这些实时数据的分析可以帮助您及时了解当前正在发生的事情,例如阅读您的博客文章的人数,或访问您的 Facebook 页面的人数。 虽然它可能听起来只是一个“不错的”功能,但在实践中,它是必不可少的。 想象一下,您是一家广告公司的一员,对您的广告活动进行实时分析——客户为此付出了高昂的代价。 实时分析可以让您随时了解您的广告在市场上的表现如何、用户对其的反应以及其他类似的事情。 如果您这样想的话,这是一个非常重要的工具,对吧?

着眼于实时数据所具有的价值,组织开始提出各种实时数据分析工具。 在本文中,我们将讨论其中之一——Apache Storm。 我们将看看它是什么,一个典型的 Storm 应用程序的架构,它的核心组件(也称为抽象),以及它的真实生活用例。

我们走吧!

目录

什么是阿帕奇风暴?

阿帕奇风暴
Apache Storm – 由 Twitter 发布,是一个分布式开源框架,有助于实时处理数据。 Apache Storm 处理实时数据,就像 Hadoop 处理数据批处理一样(批处理与实时相反。在这里,数据被分成批处理,每个批处理都被处理。这不是真正的-时间。)

Apache Storm 没有任何状态管理功能,并且严重依赖 Apache ZooKeeper(用于管理大数据应用程序中的配置的集中服务)来管理其集群状态——例如消息确认、处理状态和其他此类消息。 Apache Storm 的应用程序以有向无环图的形式设计。 它以每个节点每秒处理超过一百万个元组而闻名 - 这是高度可扩展的并提供处理作业保证。 Storm 是用 Clojure 编写的,它是一种类似 Lisp 的函数式优先编程语言。

Apache Storm 的核心是用于定义和提交逻辑图(也称为拓扑)的“Thrift 定义”。 由于 Thrift 可以用您选择的任何语言实现,因此也可以用任何语言创建拓扑。 这使得 Storm 支持多种语言 - 使其对开发人员更加友好。

Storm 在 YARN 上运行,并与 Hadoop 生态系统完美集成。 它是一个真正的实时数据处理框架,支持零批处理。 它将完整的数据流作为一个完整的“事件”,而不是将其分成一系列小批量。 因此,它最适合作为单个实体摄取的数据。

让我们看一下 Storm 应用程序的一般架构——它将让您更深入地了解 Storm 的工作原理!

Apache Storm:通用架构和重要组件

阿帕奇风暴
任何 Storm 应用程序都涉及两种类型的节点(如上所示)。

  • 主节点(Nimbus 服务)

如果您了解 Hadoop 的内部工作原理,那么您必须知道什么是“作业跟踪器”。 它是运行在 Hadoop 的 Master 节点上的守护进程,负责在节点之间分配任务。 Nimbus 是 Storm 的一种类似服务。 它运行在 Storm 集群的主节点上,负责在工作节点之间分配任务。

Nimbus 是 Apache 提供的 Thrift 服务,它允许您以您选择的编程语言提交代码。 这可以帮助您编写应用程序,而无需学习专门针对 Storm 的新语言。

正如我们之前所说,Storm 缺乏任何状态管理功能。 Nimbus 服务必须依靠 ZooKeeper 来监控工作节点在处理任务时发送的消息。 所有工作节点都会在 ZooKeeper 服务中更新其任务状态,以供 Nimbus 查看和监控。

  • 工作节点(主管服务)

这些是负责执行任务的节点。 Storm 中的工作节点运行一个名为 Supervisor 的服务。 Supervisor 负责接收 Nimbus 服务分配给机器的工作。 顾名思义,Supervisor 监督工作进程并帮助他们完成分配的任务。 这些工作进程中的每一个都执行完整拓扑的一个子集。

Storm 应用程序本质上具有四个组件/抽象,它们负责执行手头的任务。 这些是:

阿帕奇风暴

  • 拓扑

    任何实时应用程序的逻辑都以拓扑的形式打包——本质上是一个螺栓和喷口的网络。 为了更好地理解,您可以将其与 MapReduce 作业进行比较(如果您不知道那是什么,请阅读我们关于 MapReduce 的文章!)。 一个关键的区别是 MapReduce 作业在其执行完成时完成,而 Storm 拓扑将永远运行(除非您自己明确地杀死它)。 网络由形成处理逻辑的节点和演示数据传递和流程执行的链接(也称为流)组成。

  • 溪流

    在了解什么是流之前,您需要了解什么是元组。 元组是 Storm 集群中的主要数据结构。 这些是命名的值列表,其中值可以是从整数、长整数、短整数、字节、双精度、字符串、布尔浮点数到字节数组的任何值。 现在,.streams 是在分布式环境中实时创建和处理的元组序列。 它们构成了 Spark 集群的核心抽象单元。

  • 喷口

    新芽是 Storm 元组中流的来源。 它负责与实际的数据源取得联系,不断地接收数据,将这些数据转换成实际的元组流,最后发送到bolts进行处理。 它可以是可靠的,也可以是不可靠的。 如果 Storm 处理失败,可靠的 Spout 将重播该元组,另一方面,不可靠的 Spout 将在发出元组后很快忘记该元组。

  • 螺栓

    螺栓负责执行拓扑的所有处理。 它们构成了 Storm 应用程序的处理逻辑单元。 可以利用 Bolt 执行许多基本操作,例如过滤、函数、连接、聚合、连接到数据库等等。

谁使用风暴?

尽管在大数据市场中出现了许多功能强大且易于使用的工具,但 Storm 在该列表中找到了一个独特的位置,因为它能够处理您扔给它的任何编程语言。 许多组织使用 Storm。

让我们看看几个使用 Apache Storm 的大玩家以及如何使用它!

  • 推特

推特徽标
Twitter 使用 Storm 为其各种系统提供动力——从您的订阅源的个性化、收入优化到改进搜索结果和其他此类流程。 由于 Twitter 开发了 Storm(后来被 Apache 收购并命名为 Apache Storm),它与 Twitter 的其他基础设施——数据库系统(Cassandra、Memcached 等)、消息传递环境(Mesos)和监控系统无缝集成.

  • Spotify

现货标识
Spotify 以向超过 5000 万活跃用户和 1000 万订阅者提供流媒体音乐而闻名。 它提供了广泛的实时功能,如音乐推荐、监控、分析、广告定位和播放列表创建。 为了实现这一壮举,Spotify 使用了 Apache Storm。
Apache Storm 与基于 Kafka、Memcached 和 netty-zmtp 的消息传递环境堆叠在一起,使 Spotify 能够轻松构建低延迟容错分布式系统。

总结…

如果您希望建立自己的大数据分析师职业生涯,那么流媒体是您的最佳选择。 如果您能够掌握处理实时数据的艺术,那么您将成为招聘分析师职位的公司的第一选择。 现在是深入研究实时数据分析的最佳时机,因为这是真正意义上的小时需求!

如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。

从世界顶级大学在线学习软件工程学位获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

引领数据驱动的技术革命

IIIT Bangalore 大数据高级证书课程