- Flink 简介
- 数据流编程模型
- 抽象层次
- Flink中的数据分类
- 程序和数据流
- 并行数据流
Apache Flink 1.7-SNAPSHOT 中文文档
Flink基本概念
分布式处理框架
Apache Flink是一个用于分布式流和批处理数据处理的开源平台
Flink的核心是流数据流引擎,为数据流上的分布式计算提供数据分发,通信和容错
Flink在流引擎之上构建批处理,覆盖本机迭代支持,托管内存和程序优化。
这4层中,一般用于开发的是第三层,即DataStrem/DataSetAPI。用户可以使用DataStream API处理无界数据流,使用DataSet API处理有界数据流。同时这两个API都提供了各种各样的接口来处理数据。例如常见的map、filter、flatMap等等,而且支持python,scala,java等编程语言
Flink中的数据主要分为两类:有界数据流(Bounded streams)和无界数据流(Unbounded streams)
任何数据都被当作事件的流
-
无界数据流
有始无终的数据,数据一旦开始生成就会持续不断的产生新的数据,即数据没有时间边界。无界数据流需要持续并连续不断地处理.
不可能等所有数据都输入再处理
Processing unbounded data often requires that events are ingested in a specific order, such as the order in which events occurred, to be able to reason about result completeness. -
有界数据流
输入的数据有始有终. 例如数据可能是一分钟或者一天的交易数据等等。处理这种有界数据流的方式也被称之为批处理
可以等所有数据都输入再处理
Ordered ingestion is not required to process bounded streams because a bounded data set can always be sorted.
Flink程序的基本构建块是流(source)和转换(stream)
流 是(可能永无止境的)数据记录流
转换 是将一个或多个流作为一个或多个流的 算子操作。输入,并产生一个或多个输出流。
执行时,Flink程序映射到流数据流,由流和转换算子组成。每个数据流都以一个或多个源开头,并以一个或多个接收器结束。
数据流类似于任意有向无环图
Flink中的程序本质上是并行和分布式的。在执行期间,_流_具有一个或多个流分区,并且每个 _算子_具有一个或多个 算子子任务。 算子子任务彼此独立,并且可以在不同的线程中执行,并且可能在不同的机器或容器上执行。



