Flink 把流计算框架可能处理的数据集分为如下两种。
- 无界数据集(unbounded dataset):无界数据集通常是持续不断产生的,就像河水一样不停流人。现实世界中的许多数据都是无界的数据集,比如电子商务交易日志、网站点击日志等。
- 有界数据集(bounded dataset):有界的数据集通常是批次的,考虑Hadoop、MapReduce 处理的文件。
对应上述两种数据集,就有两种数据处理模型。
- 流处理:流处理任务就是常说的实时任务,任务一直运行,持续不断地处理流入的无界的数据集。(持续不停地占用计算和内存资源)
- 批处理:批处理任务对于自己要处理的有界数据集非常明确,处理完该数据集后就会释放有关计算和内存资源。
Flink底层用流处理模型来同时处理上述两种数据。在Flink看来,有界数据集不过是无界数据集的一种特例;而Spark Streaming走了完全相反的技术路线,它把无界数据集分割成有界数据集再通过微批对待流计算。
同spak sueaming、storm 等流计算引擎一样,Flink的数据处理组件也被分为三类:
数据输人(souree)、数据处理(transformation)和数据输出(sink)。
Flink 程序实际执行时,会映射到流数据流(streaming dataflow)。streaming dataflow由流和转换算符构成&#