Flink工作原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink工作原理相关的知识,希望对你有一定的参考价值。

参考技术A Task 执行

   Spark中每个Stage中的Task会被分配到一个Worker中的 -> Executor容器里面的 -> 一个线程池中被执行,Flink称每个Executor为一个TaskManager,每个TaskManager中会有多个slot作为内存隔离:

Spark:Worker  ——>   Executor  ——>  线程池  ——>  线程

Flink:  Worker  ——>   TaskManager  ——>  Slot  ——>  线程

Slot是TaskManager资源粒度的划分,每个Slot都有自己独立的内存。所有Slot平均分配TaskManger的内存,比如TaskManager分配给Solt的内存为8G,两个Slot,每个Slot的内存为4G,四个Slot,每个Slot的内存为2G,值得注意的是,Slot仅划分内存,不涉及cpu的划分。同时Slot是Flink中的任务执行器(类似Storm中Executor),每个Slot可以运行多个task,而且一个task会以单独的线程来运行。Slot主要的好处有以下几点:

可以起到隔离内存的作用,防止多个不同job的task竞争内存。

Slot的个数就代表了一个Flink程序的最高并行度,简化了性能调优的过程

允许多个Task共享Slot,提升了资源利用率,举一个实际的例子,kafka有3个partition,对应flink的source有3个task,而keyBy我们设置的并行度为20,这个时候如果Slot不能共享的话,需要占用23个Slot,如果允许共享的话,那么只需要20个Slot即可(Slot的默认共享规则计算为20个)。

以上是关于Flink工作原理的主要内容,如果未能解决你的问题,请参考以下文章

1.34.FlinkX工作原理快速起步|1.35.Flink资料

Flink架构、原理

今晚直播流式处理新秀Flink原理与实践

面试官: Flink双流JOIN了解吗? 简单说说其实现原理

面试官: Flink双流JOIN了解吗? 简单说说其实现原理

深入分析 Flink SQL 工作机制