Flink知识散点

一、KeyBy 操做后,只有当 Key 的数量大于算子的并发实例数才能得到较好的计算性能。

A.而若Key 的数量比实例数量少,就会致使部分实例收不到数据,这些实例就得不到执行,这些实例的计算能力得不到充分发挥。
B.当Key个数多余并行实例数时,因为同一个 Key 对应的全部数据都能发送到同一个计算实例上,同一个Key中所对应的数据都能分配到同一个实例中,这样Key内计算就免去了数据传递的序列化和网络IO等开销。网络

二、执行环境的excute()方法

前面咱们调用的全部方法,都不是在实际处理数据,而是在构通表达计算逻辑的DAG图。只有当咱们将整个图构建完成并显式调用 Execute 方法后,框架才会把计算图提交到集群中,接入数据并执行实际的逻辑。session

其中master负责管理整个集群中的资源和做业;而TaskExecutor 则是 Slave,负责提供具体的资源并实际执行做业。架构

四、Master 部分又包含了三个组件,即 Dispatcher、ResourceManager 和 JobManager。

A.Dispatcher负责接收用户提供的做业,而且负责为这个新提交的做业拉起一个新的 JobManager 组件
B.ResourceManager 负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager
C.JobManager 负责管理做业的执行,在一个 Flink 集群中可能有多个做业同时执行,每一个做业都有本身的 JobManager 组件。
以上三个组件都包含在 AppMaster 进程中。并发

五、当用户提交做业时,提交脚本会先启动一个Client进程负责做业的编译与提交。

它先将用户编写的代码编译为一个 JobGraph,在这个过程,它还会进行一些检查或优化等工做,如判断哪些 Operator 能够 Chain 到同一个 Task 中。而后,Client 将产生的 JobGraph 提交到集群中执行。此时有两种状况,一种是相似于 Standalone 这种 Session 模式,AM 会预先启动,此时 Client 直接与 Dispatcher 创建链接并提交做业便可。另外一种是 Per-Job 模式,AM 不会预先启动,此时 Client 将首先向资源管理系统 (如Yarn、K8S)申请资源来启动 AM,而后再向 AM 中的 Dispatcher 提交做业。框架

六、看成业到 Dispatcher 后

Dispatcher 会先启动一个 JobManager 组件,而后 JobManager 会向 ResourceManager 申请资源来启动做业中具体的任务。这时根据 Session 和 Per-Job 模式的区别, TaskExecutor 可能已经启动或者还没有启动。如果前者,此时 ResourceManager 中已有记录了 TaskExecutor 注册的资源,能够直接选取空闲资源进行分配。如果后者,ResourceManager 也须要先向外部资源管理系统申请资源来启动 TaskExecutor,而后等待 TaskExecutor 注册相应资源后再继续选择空闲资源进程分配。
目前 Flink 中 TaskExecutor 的资源是经过 Slot 来描述的,一个 Slot 通常能够执行一个具体的 Task,但在一些状况下也能够执行多个相关联的 Task。ResourceManager 选择到空闲的 Slot 以后,就会通知相应的 TM “将该 Slot 分配给 JobManager XX ”,而后 TaskExecutor 进行相应的记录后,会向 JobManager 进行注册。JobManager 收到 TaskExecutor 注册上来的 Slot 后,就能够实际提交 Task 了。TaskExecutor 收到 JobManager 提交的 Task 以后,会启动一个新的线程来执行该 Task。Task 启动后就会开始进行预先指定的计算,并经过数据 Shuffle 模块互相交换数据。性能

7.1Per-job 模式下整个 Flink 集群只执行单个做业,即每一个做业会独享 Dispatcher 和 ResourceManager 组件。此外,Per-job 模式下 AppMaster 和 TaskExecutor 都是按需申请的。所以,Per-job 模式更适合运行执行时间较长的大做业,这些做业对稳定性要求较高,而且对申请资源的时间不敏感。【通常配合yarn、mesose、k8s等外部资源管理器】
7.2与之对应,在 Session 模式下,Flink 预先启动 AppMaster 以及一组 TaskExecutor,而后在整个集群的生命周期中会执行多个做业。能够看出,Session 模式更适合规模小,执行时间短的做业。【通常在standalone模式下使用】优化

相关文章
相关标签/搜索