工程的博客

项目光速:更快、更简单的流处理与Apache火花

分享这篇文章

流数据今天是一个关键面积计算。它是快速决策的基础系统产生的大量输入数据,网络帖子,是否销售饲料,或传感器数据,等。处理流数据也在技术上具有挑战性的,它需要远不同于和更复杂的比事件驱动的应用程序和批处理。

以满足流处理需求,结构化流是在Apache火花™2.0中引入的。结构化流是一个具有可扩展性和容错性流处理引擎建立在火花的SQL引擎。用户可以使用SQL或表达逻辑数据集/ DataFrame API。运行管道的引擎将照顾增量,不断和更新最终结果随着流数据到达。结构化流一直是主流好几年和1000年代是广泛采用的组织,处理超过1 PB的数据(压缩)每天独自在砖平台上。bob体育客户端下载

采用加速和应用程序移动到流媒体的多样性增加,新的需求出现。我们正在开始一个新的计划代号为项目光速来满足这些要求,将引发结构化流给下一代。需求解决的光速是斗分为四个不同的类别:

  • 改进的延迟和确保它是可预测的
  • 增强功能与新的运营商处理数据和api
  • 提高生态系统支持连接器
  • 简化部署、操作、监控和故障诊断

在这个博客中,我们将讨论火花结构化流媒体的发展及其主要优点。然后我们将概述概述项目光速拟议中的新特性和功能。

增长引发的结构化流

火花结构化流被广泛采用,因为早期的流媒体由于其易用性,性能、大生态系统,和开发者社区。流负载我们看到的多数是客户迁移他们的批处理工作负载利用延迟越低,容错,并支持增量处理流媒体提供。我们看到了巨大的采用从流媒体客户开源火花和砖。bob下载地址以下图表显示了每周砖上的流媒体工作的数量在过去的三年里,它已从数以千计4 +数百万和仍在加速。

增长引发的结构化流

火花结构化流媒体的优点

几个属性的结构化流了今天流行的成千上万的流媒体应用程序。

  • 统一——结构化流的最重要的优势是,它使用相同的API作为火花DataFrames批处理,使过渡到实时处理批处理更简单。用户可以简单地编写一个DataFrame计算使用Python, SQL,或者引发其他受支持的语言,让发动机运行它作为增量流媒体应用程序。计算将逐步运行新数据到达时,和只有一次语义,从失败中恢复自动运行时通过相同的引擎实现作为一个批处理计算,从而给出一致的结果。这种共享降低复杂性,消除了批处理和流媒体工作负载之间分歧的可能性,并降低运营成本(Lakehouse整合基础设施是一个关键的好处)。此外,引发的许多其他内置库可以被称为流上下文,包括毫升库。
  • 容错和复苏——结构化流检查点状态自动处理过程中。当发生故障时,它会自动恢复以前的状态。故障恢复的非常快,因为它被限制为失败的任务,而不是重新启动整个流管道在其他系统中。此外,容错使用可复制源和幂等汇支持端到端只有一次语义。
  • 性能——结构化流提供了非常高的吞吐量和秒的延迟以更低的成本,充分利用SQL引擎性能优化的火花。系统还可以调整本身基于提供的资源从而交易成本,吞吐量和延迟和支持动态扩展的集群运行。这与系统,需要前期承诺的资源。
  • 灵活的操作——应用任意逻辑能力和操作的输出流查询使用foreachBatch,使能力执行操作,如插入写入多个下沉,与外部数据源进行交互。超过40%的用户在砖利用这个特性。
  • 有状态的处理——支持状态聚合,加入水印有界状态和订单处理。与(平)此外,任意的有状态操作mapGroupsWithState RocksDB国家支持的存储提供了高效、容错状态管理(如3.2火花)。

项目光速

的重要越来越感兴趣流在企业和火花结构化流的事实标准在各种各样的应用程序,项目光速将大力投资改善以下领域:

可预测的低延迟

Apache火花结构化流提供了一个平衡的性能在多个维度——吞吐量,延迟和成本。随着结构化流中使用新的应用程序,我们分析客户工作量指导改进尾延迟2 x。实现这一目标,一些措施我们将进行如下:

  • 抵消管理——我们的客户的工作负载概要分析和性能实验表明,抵消管理操作消耗高达30 - 50%的管道。这可以通过改善这些操作异步和可配置的节奏,从而减少了延迟。
  • 异步的检查点——当前检查点机制同步写入到对象存储在处理的一组记录。这大大有助于延迟。这可以提高多达25%的重叠执行下一组的记录和写作的检查点之前的群记录。
  • 州检查点频率——火花结构化流检查点状态处理的一组记录后,增加了端到端延迟。相反,如果我们让它可调每N组检查点,可以进一步减少延迟取决于选择N。

增强的功能/事件处理数据

火花结构化流已经有丰富的功能表达主要的用例集。作为企业扩展涌入新的用例,需要额外的功能简明地表达它们。项目光速推进功能在以下方面:

  • 多个有状态操作——目前,结构化流支持每个流的工作只有一个有状态的操作符。然而,一些用例需要多个国家运营商的工作如:

    • 链接时间窗聚合(如5分钟暴跌窗口聚合之后1小时暴跌窗口聚合)
    • 链接stream-stream外平等加入(如左外连接B C)左外部连接
    • Stream-stream时间间隔加入时间窗聚合紧随其后
    • 项目光速将支持此功能一致的语义。
  • 先进的窗口——火花结构化流提供基本的窗口,可以满足大多数用例。先进的窗口将增加这个功能简单,容易使用,直观的API来支持任意窗口元素组,在窗口定义通用的处理逻辑,描述何时触发处理逻辑能力和选择驱逐窗口元素之前或之后处理逻辑。
  • 状态管理——通过预定义的聚合器和连接状态提供了支持。此外,专业api提供了直接访问状态和操作它。新功能,在光速,将把国家的发展模式随着处理逻辑的变化和外部查询状态的能力。
  • 异步I / O——通常,ETL,需要加入一个与外部数据库和microservices流。项目光速将引入一个新的API,管理连接到外部系统,批处理效率和处理异步请求。
  • Python API平价,而Python API是受欢迎的,它仍然缺乏原语进行有状态的处理。光速将添加一个强大而简单的API来存储和操作状态。此外,光速将为加强集成提供流行的Python数据处理软件包像熊猫,方便开发人员。

连接器和生态系统

连接器更容易使用火花结构化流引擎处理的数据和处理数据写入各种消息传递总线Apache卡夫卡和存储系统,如三角洲湖。作为项目的一部分,光速,我们将在下列工作:

  • 新的连接器——我们将添加新的连接器工作与合作伙伴(例如,bob体育外网下载谷歌Pub / Sub,亚马逊DynamoDB)使开发人员能够轻松地使用火花结构化流与额外的消息传递引擎巴士和存储系统他们喜欢。
  • 连接器的增强——我们将启用新的功能和提高性能在现有的连接器。一些例子包括AWS我身份验证的支持Apache卡夫卡连接器和增强的扇出支持亚马逊运动连接器。

操作和故障排除

结构化流工作持续运行,直到显式终止。由于不间断的性质,有必要适当的工具和指标监控、调试和警报当超过一定阈值。对满足这些目标,项目光速将改善以下:

  • 可观察性——目前,度量生成结构化流管道监测需要编码来收集和可视化。我们将统一度量收集机制并提供出口到不同的系统和格式的能力。此外,根据客户输入,我们将添加额外的故障诊断的指标。
  • Debuggability——我们将提供功能可视化管道和运营商如何分组和映射到任务执行人的任务正在运行。此外,我们将实现能力深入到具体的执行人,浏览日志和各种指标。

接下来是什么

在这个博客上,我们讨论了火花结构化流的优点,以及它如何导致了广泛的增长和采用。我们介绍了项目光速进步火花结构化流媒体实时时代随着越来越多新用例和工作负载迁移流。

在随后的博客,我们将扩大在各个类别的多个维度的提高火花结构化流性能,增强功能,操作和生态系统的支持。

项目光速将逐步推出合作和密切与社区合作。我们预计的大部分功能由明年初。

免费试着砖

相关的帖子

看到所有工程的博客的帖子