Apache Flink:Stream and Batch Processing in a Single Engine

论文主要内容:

这篇论文主要介绍了Apache Flink,一个开源系统,用于处理流数据和批量数据。主要内容包括:

  1. Flink的软件架构由四层组成:部署层、核心层、API层和库层。核心层是一个分布式数据流引擎,执行数据流程序。API层包括批处理API DataSet和流处理API DataStream。库层包括机器学习库FlinkML、图处理库Gelly等。

  2. Flink将流处理作为统一的数据处理模型,在编程模型和执行引擎中实现了流处理和批处理。通过灵活的窗口机制,Flink程序可以计算早期和近似结果,以及延迟和准确结果,消除了需要结合不同系统来实现这两种用例的需求。

  3. Flink提供了对时间处理的支持,包括事件时间、摄入时间和处理时间,给程序员在定义事件如何关联方面提供了高度灵活性。

  4. Flink通过异步屏障快照机制实现了容错,能够可靠地执行并保证严格的一次性处理一致性。此外,它还提供了对迭代数据流的支持。

  5. 在Flink之上,流处理API DataStream实现了完整的流分析框架,包括管理时间、定义窗口、维护和更新用户定义的状态等机制。

  6. Flink通过批处理API DataSet提供了批处理的专门支持,并通过查询优化层将DataSet程序转换为高效的执行。

  7. Flink在批处理中实现了迭代处理,如增量图分析、并行梯度下降等。

  8. 与其他系统相比,Flink是唯一一个同时支持事件时间和乱序事件处理、提供一致管理的状态、并保证高吞吐量和低延迟的开源流处理系统。

论文预览: