阿帕奇大数据流框架的特性


本文旨在解释Apache大数据流处理框架的一般特性。此外,它还提供了Apache大数据流框架与通用特性的清晰对比分析,因此有助于为应用程序开发选择合适的框架。

1.介绍

在大数据领域,有许多工具和框架可用于以离线模式或批处理模式处理大量数据。但是对实时处理的需求也很高,以分析高速传输的数据,并提供分析或浓缩服务。在过去的几年里,这是一个不断变化的局面,有许多新加入的流框架。因此,选择实时处理引擎成为一项挑战。

2.设计

实时流引擎与流或消息框架交互,如阿帕奇卡夫卡、拉比特姆格或阿帕奇水槽,以实时接收数据。

它在集群计算引擎中处理数据,该引擎通常运行在一个集群管理器之上,如Apache TYPE、Apache Mesos或Apache Tez。

处理后的数据被发送回消息队列(阿帕奇卡夫卡,拉比特姆克,水槽)或写入存储器,如HDFS,NFS。

StreamingFrameworkDesign

3.实时流处理引擎的特点

3.1编程模型

它们是实时流框架中存在的两种编程模型。

3.1.1成分

这种方法提供了基本组件,使用这些组件可以创建流应用程序。例如,在阿帕奇风暴中,喷口用于连接不同的源并接收数据,而螺栓用于处理接收到的数据。

3.1.2声明性

这更像是一种函数式编程方法,框架允许我们定义更高阶的函数。这种声明式应用编程接口提供了更高级的操作,如窗口或状态管理,并且被认为更加灵活。

3.2信息传递保证

有三种消息传递保证机制。它们是:至少一次
一次,确切地说是一次。

3.2.1最多一次

这是一种尽力而为的交付机制。该消息可以被传递一次或多次。因此,处理重复事件的可能性非常高。

3.2.2至少一次

该机制将确保消息至少传递一次。
但是在至少交付一次的过程中,框架可能会交付
消息不止一次。因此,重复的消息可能会被接收和处理。
这可能会导致不必要的复杂情况,因为处理逻辑不是
无所不能。

3.2.3恰好一次

该框架将确保消息只被传递和处理一次。
消息传递是有保证的,不会有任何重复的消息。
因此,“恰好一次”交货保证被认为是最好的。

3.3国家管理

语句管理定义了在实际处理数据之前事件在框架中累积的方式。这是决定实时分析框架的关键因素。

3.3.1无状态处理

在没有知识的情况下独立处理传入事件的框架
任何以前的事件都被认为是无状态的。数据丰富和数据处理应用可能需要某种处理能力。

3.3.2有状态处理

流处理框架可以利用以前的事件来处理
将事件存储在缓存或外部数据库中。实时分析应用程序需要有状态的处理,这样它就可以收集特定时间间隔的数据,并在真正向用户推荐任何建议之前进行处理。

3.4处理模式

处理模式定义了如何处理传入数据。有三种处理模式:事件、微批处理和批处理。

3.4.1 .事件模式

每个传入的消息都是独立处理的。它可能会也可能不会维护状态信息。

3.4.2微量批次

传入事件在特定的时间窗口内累积,收集的事件作为批处理一起处理。

3.4.3批次

传入的事件像有界的输入流一样被处理。
这使得它能够处理大量有限的传入事件。

3.5集群管理器

在集群计算环境中运行的实时处理框架可能需要一个集群管理器。对集群管理器的支持对于支持应用程序的可伸缩性和性能要求至关重要。这些框架可能在独立模式下运行,它们自己的集群管理器,Apache纱,Apache Mesos或Apache Tez。

3.5.1独立模式

在独立模式下运行的支持在开发阶段很有用,开发人员可以在他们的开发环境中运行代码,他们不需要在大型集群计算环境中部署他们的代码。

3.5.2专有集群管理器

一些实时处理框架可能支持它们自己的集群管理器,例如Apache Spark有自己的独立集群管理器,它与软件捆绑在一起。这减少了安装、配置和维护其他集群管理器(如Apache Shate或Apache Mesos)的开销。

3.5.3对行业标准集群管理器的支持

如果您已经有了一个大数据环境,并且希望利用集群进行实时处理,那么对现有集群计算管理器的支持是非常关键的。实时流处理框架必须支持Apache纱、Apache Mesos或Apache Tez。

3.6容错

大多数大数据框架遵循主从架构。基本上,主机负责在集群上运行作业并监控集群中的客户端。因此,该框架必须处理主节点的故障以及客户端节点的故障。一些框架可能需要一些外部工具,例如monit/supervisord监控主节点。例如,Apache Spark流有自己的主(驱动程序)节点监控过程。如果主节点出现故障,它将自动重新启动。如果客户端节点出现故障,主机会负责重新启动它们。但是在阿帕奇风暴中,必须使用monit监控主机。

3.7外部连接器

该框架必须支持与外部数据生成源的无缝连接,如推特订阅源、卡夫卡订阅源、拉比订阅源、水槽订阅源、RSS订阅源、赫卡德订阅源等。框架必须提供标准的内置连接器,并提供扩展连接器以连接各种流数据源。

3.7.1社交媒体连接器——推特/ RSS订阅源

3.7.2消息队列连接器-卡夫卡/拉比

3.7.3网络端口连接器–TCP/UDP端口

3.7.4定制连接器–支持开发定制连接器,以便从定制应用程序中读取。

3.8编程语言支持

这些框架大多支持JVM语言,尤其是Java和Scala。有些人也支持Python。框架的选择可能取决于选择的语言。

3.9参考数据存储和访问

实时处理引擎可能需要引用一些数据库来增强或聚合给定的数据。因此,框架必须提供集成和高效访问参考数据的功能。一些框架提供了在内存中内部缓存引用数据的方法(例如,Apache Spark广播变量)。Apache Samza和Apache Flink支持在每个集群节点内部存储参考数据,这样作业就可以在内部访问这些数据,而无需通过网络连接到数据库。

以下是大数据流框架中可用的各种方法:

3.9.1内存缓存:允许在集群节点内存储引用数据,这样可以通过减少连接外部数据库的延迟来提高性能。

3.9.2每客户端数据库存储:允许将数据存储在第三方数据库系统中,如MySQL、SQLite、MongoDB等。还提供应用编程接口支持来连接和检索这些数据库中的数据,并提供高效的数据库连接方法。

3.9.3远程数据库管理系统连接:这些系统支持连接到流式集群之外的外部数据库。这被认为效率较低,因为网络连接带来了较高的延迟,网络通信带来了瓶颈。

3.10延迟和吞吐量

虽然硬件配置在延迟和吞吐量方面起着重要作用,但是框架的一些设计因素会影响性能。这些因素包括:网络输入输出、有效使用内存、减少磁盘访问以及内存中的参考数据缓存。例如,由于减少了网络输入/输出,阿帕奇卡夫卡流应用编程接口提供了更高的吞吐量和低延迟,因此消息传递框架和计算引擎在同一个集群中。同样,Apache Spark使用内存来缓存数据,因此减少了磁盘访问,从而实现了低延迟和高吞吐量。

4.特征对照表

下表提供了Apache流框架与上述功能的比较。

StreamFrameworkComparison

上述框架支持有状态和无状态处理模式。

5.结论

本文总结了流框架的各种特性,这些特性是新的流应用程序的关键选择标准。每个应用程序都是独一无二的,都有自己特定的功能和非功能需求,因此正确的框架完全取决于需求。