一. Flink是什么?
1. Flink的定义
Apache Flink is a framework and distributed processing engine for stateful computations overunbounded and boundeddata streams. Flink has been designed to runinallcommon cluster environments, perform computations atin-memory speedandatany scale.
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
2. 有界流和无界流
任何类型的数据都可以形成一种事件流。信用卡交易、传感器测量、机器日志、网站或 移动应用程序上的用户交互记录,所有这些数据都形成一种流。
- 无界流: **有定义流的开始,但没有定义流的结束。**它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理, 因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事 件,例如事件发生的顺序,以便能够推断结果的完整性。
- 有界流: **有定义流的开始,也有定义流的结束。**有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理
Apache Flink 擅长处理无界和有界数据集 精确的时间控制和状态化使得 Flink 的运 行时(runtime)能够运行任何处理无界流的应用。 有界流则由一些专为固定大小数据集特殊设计的算法和数据结构进行内部处理,产生了出色的性能。
3. 有状态的计算架构
数据产生的本质,其实是一条条真实存在的事件按照时间顺序源源不断的产生,我们很 难在数据产生的过程中进行计算并直接产生统计结果