本文介绍流处理的概念,流处理引擎环境和Apache Spark Streaming概述。
流处理
批数据处理是指通过固定的输入数据集运行计算逻辑,并在结束时产生结果。这意味着处理将在到达数据集末尾时停止。
相比之下,流处理是关于通过无界数据集运行计算逻辑,因此处理是连续且长时间运行的。
虽然批处理数据与流数据的区别主要在于有限性,但由于流数据的无界数据性质、实时数据的传入顺序、
数据到达的不同速率以及面对机器故障时对正确性和低延迟的期望,流数据处理要比批数据处理复杂得多,也更具挑战性。
流处理的挑战
流数据处理有它自己的一组独特的挑战,这些挑战是处理连续和无界数据的结果。
在开始构建长时间运行的流数据处理应用程序或评估特定的流处理引擎时,务必牢记这些挑战。挑战如下:
-
以可靠的方式为数据流应用维护潜在的大状态。
-
高效、快速地为应用程序提供要处理的消息。
-
处理无序到达的流数据。
-
与批量数据连接以丰富传入的流数据。
-
端到端、只需一次即可保证即使在出现故障的情况下也能交付数据。
-
处理不均匀的数据到达率
流处理的概念
-
数据传递语义。
-
时间观念。
-
窗口
数据传递语义
当一条数据进入流处理引擎时,它有责任将其传送到流应用程序进行处理。即使在故障情况下,流处理引擎也可以提供三种类型的保证。
- 至多一次:这意味着流处理引擎保证一段数据不会