流数据如何在Flink新线程模型上流动

本文深入探讨Flink 1.10版本的新线程模型,通过调试local模式下的数据流动,理解各个相关线程启动及数据如何在不同组件间传递。详细分析了从LegacySourceThread接收数据,经过flatmap、keyBy、reduce到print的过程,揭示了OutputFlusher线程在数据处理中的作用。调试线程有助于提升多线程问题定位能力。
摘要由CSDN通过智能技术生成

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模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值