Flink的新线程模型从1.9开始,到1.10才改造完成,但笔者接触FLink都已经1.10了,在研究Flink线程模型时才得以了解这些信息,所以对之前版本的线程模型并不熟知。为了简化研究的复杂度,本文试图调试Flink的local模式看看新线程模型下如何传递数据。下文分别从两个角度分析:1、各个相关线程的启动。2、数据如何流动。
花了3天时间终于理清楚了。经过研究它们的交互图如下:
该图流程相对清晰,读者可根据流程图理解交互过程,下文会通过调试代码完成解读。
一、各个相关线程的启动
打开idea,使用官网自带的一个基础的demo线程
该demo有source->flatmap->keyBy->reduce->print几个过程,为了防止这些过程被优化后运行在同一个的slot里,所以添加了setParallelism(2)。
打开debug模式,可以看到如下的线程:
该Local模