Flink
文章平均质量分 58
Flink源码解析
a解code
勇气,快意恩仇
展开
-
Flink kafka connectors 源码详解---<3>
fetchTask,与AddSplitTask 之间,需要判断,如果任务队列有其它任务就运行,不然就运行FetcherTask,但是fetchTask 有可能阻塞,原因,在于FutureCompletingBlockingQueue 的容量满了之后,会阻塞线程,就需要wakeUp,打破这个阻塞,打破阻塞就在 添加AddSplitTask 后,对splitFetcher 调用wake()这篇主要是补上篇挖的洞,看看拉取数据的线程模型。fetchTask 中的 wakeUp。这里面要考量的点,包括几点。原创 2023-01-11 20:09:23 · 144 阅读 · 0 评论 -
Flink kafka connectors 源码详解---<2>
方法,该方法凸出的功能,1.初始化记录当前split的offset,2.ck时,将split、offset 信息作为state保存,3.在KafkaRecordEmitter emit record时,动态更新 offset 信息,保证source 源头,消费的一致性。先了解 SplitFetcherManager,如果去源码的英文注解就可以很明显的知道,它就是要维持一个线程池,同时保存好所有的splitFetcher,splitFetcher,既有run方法,也可以提交任务。有意思的可以去看源码。原创 2023-01-07 19:24:08 · 317 阅读 · 0 评论 -
Flink kafka connectors 源码详解---<1>
Flink 中kafka 作为Source源头,首先会开始一个SourceCoordinator来与Kafka联系获取所有topic分区,同时兼顾新增tp(topic parition)的检测,在根据并行度,根据一个规则(等下用源码展示这个规则)来切分tp,然后,Flink 在并行度work中会开启SourceOperator,并向SourceCoordinator发送注册请求,要求获取split tp,用来后续的消费kafka数据。然后,根据并行度,将topic的分区匀出去。原创 2023-01-04 22:42:28 · 542 阅读 · 0 评论 -
Netty的Recycler 大改版 4.174/5/6/7 版本新解
这次的Recycler 改动很大,照例先说下Recycler的功能点在哪里,要构造一个可以复用的对象,比如:申请一个Buffer,逻辑操作用完后,只需要将Buffer中的数据清楚,接着继续使用Buffer。ok,原创 2022-05-23 16:39:39 · 323 阅读 · 0 评论 -
Flink Idle 中的设计
Flink Idle 中的设计哈哈… 今天是源码解析天,关于Idle 的,来吧,看看源码中是怎样检测数据源是否要标记位Idle。在StreamSourceContexts 类中可以看到, 内部类 WatermarkContext的构造方法中设置了IdleTimeOut,timeService(这个是一个定时执行的服务),以及调用了scheduleNextIdleDetectionTask()方法。 public WatermarkContext( final Proc原创 2022-05-07 19:45:28 · 967 阅读 · 0 评论 -
flink 中WindowAll后的 reduce 并行数为什么是1,但不代表所有的窗口符合该条件
flink 中窗口后的 reduce 并行数为什么是1如何控制并行数,用一个变量存起来呗,parallelism 变量存放某个操作的并行数。一般是有默认配置或者用户指定。那为什么窗口后reduce 只有一个并行数。且无法改变。因为强制把此操作的并行数设置为1 了呗。// 这是 AllWindowedStream类的 reduce(...) 中的一段。很明显在强制操作。 return input.transform(opName, resultType, operator).forceNonPara原创 2022-05-11 16:44:20 · 640 阅读 · 0 评论 -
快速用源码了解Flink的watermark 及Idle
快速用源码了解Flink的watermark先回答两个问题WaterMark(以下用wm 表示)的定义是什么,启到了什么作用?根据wm的策略,产生 eventTimeStamp的wm 和 systemTimeStamp 的vm。主要用来表征,数据流现在处理的数据到了哪儿。特征是一直递增,为流处理的触发启到一个参照物的作用。wm 是从哪里产生的,如果数据源部分分区停了怎么办?下游任务面对多个数据源分区是怎么获得wm。wm 如果说是eventTime 产生的,那么数据源就是其产生的源头。数据源分区停原创 2022-05-06 15:54:50 · 834 阅读 · 0 评论 -
Flink Window 触发机制的关键模型
Flink 触发机制的关键模型前面的文章,提到Watermark(以下有wm代替)的时候,就说过wm为触发,提供参照物的作用。今天就看用源码看看。这里有两个情况,先展开讨论下,第一是,没有窗口,也就意味着,每条数据,都需要根据wm来判断是否触发。第二是 ,有窗口,意味着,每个窗口,都需要根据wm来判断是否触发。虽然是两种情况,但是具有共性特征,窗口也有时间,用窗口的endTime代表窗口触发的时间,就和数据触发过程无异了。聊到了这,就有两个问题需要解答,数据或窗口的时间怎么保存,怎么触发。原创 2022-05-12 18:35:03 · 558 阅读 · 0 评论