目录
1. 基本概念
- Task(任务):Task 是一个阶段多个功能相同 subTask 的集合,类似于 Spark 中的 TaskSet。
- subTask(子任务):subTask 是 Flink 中任务最小执行单元,是一个 Java 类的实例,这个 Java 类中有属性和方法,完成具体的计算逻辑。
- Operator Chains(算子链):没有 shuffle 的多个算子合并在一个 subTask 中,就形成了 Operator Chains,类似于 Spark 中的 Pipeline。
- Slot(插槽):Flink 中计算资源进行隔离的单元,一个 Slot 中可以运行多个 subTask,但是这些 subTask 必须是来自同一个 application 的不同阶段的 subTask。
- State(状态):Flink 在运行过程中计算的中间结果
2. Flink 数据流
- Flink程序的基本构建块是流和转换。
- 从概念上讲,流是对当前数据流向的记录(流也可能是永无止境的) ,而转换是将一个或多个流作为输入,根据需要求转换成我们要的格式的流的过程。
- 当程序执行时,Flink程序会将数据流进行映射、转换运算成我们要的格式的流。每个数据流都以一个或多个源(Source)开始,并以一个或多个接收器(Sink)结束,数据流类似于任意有向无环图(DAG)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rf9A43Fb-1616407964664)(https://ci.apache.org/projects/flink/flink-docs-release-1.10/fig/program_dataflow.svg)]
- 多个 Operator 之间,通过 Stream 流进行连接,Source、Transformation、Sink之间就形成了一个有向非闭环的 Dataflow Graph(数据流图)。
2.1 并行数据流
- Flink中的程序本质上是并行的和分布式的。在执行期间,一个流具有一个或多个流分区,并且每个运算符具有一个或多个运算符子任务。操作员子任务彼此独立,并在不同的线程中执行,并且可能在不同的机器或容器上执行。
- 操作员子任务的数量是该特定操作员的并行性。流的并行性始终是其生产运营商的并行性。同一程序的不同运算符可能具有不同的并行度。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xsh9M2xs-1616407964665)(https:

最低0.47元/天 解锁文章
1610

被折叠的 条评论
为什么被折叠?



