Flink重要的概念

Flink的四张图

  • DataFlow Graph(数据流图)

是代码写完之后,根据API就生成了。

  • Job Graph(任务图)

是客户端根据数据流图优化后的图。

  • Execution Graph(执行图)

是客户端把任务图(Job Graph)提交给集群后,集群的JobManager根据任务图解析,转换成了Execution Graph。

  • Physical Graph(物理图)

是JobManager把Executor Graph调度给TaskManager执行,TaskManager收到Execution Graph后,把执行图解析,转换成了能够具体执行任务的物理图。

算子&算子链

算子:每一个Flink程序的方法。Flink的算子分为三类:

  • source算子

  • transform算子

  • sink算子

算子链:把one-to-one算子进行合并后,形成多个算子在一起的情况,叫做算子链。

槽&槽共享

槽:也是slot,是TaskManager上的固定的资源。任务必须在slot里运行。

槽共享:一个槽,可以运行多个不同Task的SubTask。

并行度

Flink提供了四种设置并行度的方式:

  • 配置文件(默认的,优先级最低)

  • 任务提交(-p 3)

  • 代码全局层面(env.setParallelism(3))

  • 算子层面(map.setParallelism(3),优先级最高)

优先级的高低顺序如下:

算子层面 -> 代码全局层面 -> 任务提交 -> 配置文件

宽窄依赖

Spark的宽窄依赖如下:

Narrow Dependency,窄依赖

Shuffle Dependency,宽依赖

Flink的宽窄依赖如下:

One-to-One Dependency,窄依赖,数据流中上下游算子的依赖是一对一的。

Redistribution Dependency,宽依赖,数据流中上下游算子的依赖是一对多的。

Flink的层级关系

Flink集群 -> Job(作业) -> Task(任务,根据宽依赖算子) -> SubTask(子任务,并行度)

备注:

Slot(槽) 固定的静态资源

并行度:动态的任务执行参数

并行度 <= 可用槽数量

比如说:slot,只有4个

但是,并行度设置为5

Standalone集群,执行失败的。

Yarn集群,可以正常执行。因为Yarn可以动态开启Container(TaskManager)

你可能感兴趣的:(flink,大数据)