实时数据流计算引擎Flink和Spark剖析

在过去几年,业界的主流流计算引擎大多采用Spark Streaming,随着近两年Flink的快速发展,Flink的使用也越来越广泛。与此同时,Spark针对Spark Streaming的不足,也继而推出了新的流计算组件。本文旨在深入分析不同的流计算引擎的内在机制和功能特点,为流处理场景的选型提供参考。

(DLab数据实验室 w.x.公众号出品)

一. Spark Streaming

Spark Streaming是Spark最早推出的流处理组件,它基于流式批处理引擎,基本原理是把输入数据以某一时间间隔批量的处理(微批次),当批处理时间间隔缩短到秒级时,便可以用于实时数据流。

1. 编程模型

在Spark Streaming内部,将接收到数据流按照一定的时间间隔进行切分,然后交给Spark引擎处理,最终得到一个个微批的处理结果。

实时数据流计算引擎Flink和Spark剖析_第1张图片

2. 数据抽象

离散数据流或者数据流是Spark Streaming提供的基本抽象。它可以是从数据源不断流入的,也可以是从一个数据流转换而来的。本质上就是一系列的RDD。每个流中的RDD包含了一个特定时间间隔内的数据集合,如下图所示。

实时数据流计算引擎Flink和Spark剖析_第2张图片

3. 窗口操作

Spark Streaming提供了滑动窗口接口,滑动窗口的两个重要的参数是窗口大小,滑动步长。它允许在数据的滑动窗口上应用转换。如下图所示,每当窗口在源Dstream上滑动时,位于窗口内的源RDDs就会被合并操作,来生成窗口化的Dstream的RDDs。

你可能感兴趣的:(flink,spark,数据库,kafka,hadoop)