![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flink
文章平均质量分 92
weixin_45626756
这个作者很懒,什么都没留下…
展开
-
Flink 任务提交与执行流程
JobGrap的接受与运行上文我们讲解了客户端将用户代码最终转化为JobGrap之后,通过Dispatcher的网关将JobGrap提交给Dispatcher。之后Dispatcher通过JobManagerRunnerFactory工厂类创建JobManagerRunner实例,最终调用JobManagerRunner实例启动JobManager服务。JobManager服务的底层主要通过JobMaster实现的,负责整个作业的生命周期和Task调度工作。JobGrap提交整体流程flink客户端原创 2022-01-17 11:17:51 · 2018 阅读 · 1 评论 -
Flink状态管理
KeyedState的管理KeyState通过KeyedStateBackend进行创建和管理,Flink提供了基于JVM堆内存和RocksDB实现的KeyedStateBackend。KeyedStateBackend不仅提供了创建KeyedState的功能,也实现SnapshotStrategy接口,对KeyedStateBackend中的状态数据进行快照,实现状态数据的持久化。在Task初始化时,每个Task实例初始化的过程中都会创建一个StateBackend,用于管理状态和Checkpoint原创 2022-01-12 11:26:06 · 923 阅读 · 0 评论 -
Flink Checkpoint机制剖析(源码剖析)
Checkpoint整体设计Checkpoint执行过程分为:启动、执行以及确认完成三个阶段。CheckpointCoordinator控制Checkpoint执行:JM端的CheckpointCoordinator组件会周期性的向数据源发送执行CK的请求,数据源节点将数据源消费的offset发送给JM,存储到CK的元数据信息中。同时向下广播barrier。中间算子对齐barrier:中间算子在StreamTaskNetworkInput组件中读取数据并对齐各个channel的barrier。bar原创 2022-01-11 14:44:19 · 1578 阅读 · 1 评论 -
Flink Mailbox模型
Flink在1.10版本中完成了对StreamTask的运行机制进行了重构,引入了Mailbox机制。本文对这次改动做了哪些修改,以及对比之前的实现有哪些好处进行一些简要的介绍。Flink处理模型Flink将任务代码转换为DAG后,每个节点有各自的并发度p,节点间依靠网络传输消息。每个Task的每个并发都是独立的线程,可以简单的理解为class Task implements Runnable { public void run() { while(true) {原创 2021-06-05 11:15:56 · 805 阅读 · 0 评论 -
flink的反压机制(源码剖析)
背景在前文我们对flink早期基于TCP的反压和现在基于信任值的反压机制进行了剖析 Flink反压机制剖析,本文主要从源码的角度对flink基于Credit&BackLog的反压机制从源码的角度剖析其具体实现过程。基于TCP反压的问题TaskManager之间会启动一个TCP通道进行数据交互,TaskManager的所有Task通过多路复用使用同一个TCP通道。因此,当下游因一个Task处理能力不足造成反压时,就会导致整个TCP通道阻塞。即使其他Task还有空余的Buffer也无法接受数据原创 2022-01-07 11:01:01 · 1250 阅读 · 0 评论 -
StreamTask数据流
背景本文紧接上篇,将介绍在Task现场启动之后,数据是如何从网络中读取转换处理的。本文主要从源码角度一步步分析StreamTask中数据流转过程,其中涉及到上下游netty的交互、数据的反压和checkpoint机制会在接下来的篇章详细讲解。StreamTask整体数据流StreamTask有多种实现,本文主要以OneInputStreamTask为例进行介绍。public abstract class StreamTask<OUT, OP extends StreamOperator<原创 2021-12-22 18:53:28 · 1013 阅读 · 0 评论 -
flink任务执行流程剖析
背景本文主要从源码角度对flink底层是如何将task分配到各个taskExecutor上执行,以及task执行的线程模型进行分析。会涉及到jobmaster如何将task分发到taskExecutor中,以及taskExecutor执行task的详细过程,以及task的mailBox线程模型。JobMaster部署task TM启动Task线程jobmaster主要通过以及分配的slot,获取到slot对应的taskmanager网管,然后提交task。TaskExecutor创建并启动Task线原创 2021-12-21 19:13:25 · 1655 阅读 · 0 评论 -
flink网络通信剖析(组件rpc通信)并基于akka实现rpc框架
背景最近阅读了flink 1.10版本网络通信部分的相关源码,网络部分主要有两块:组件之间的rpc调用(akka)taskManager之间的数据传输(netty实现)本文主要解析flink底层是如何使用akka封装的rpc,并模仿flink的设计方式,基于akka实现一个简单的rpc通信框架。组件RPC通信架构flink底层的rpc调用主要分为RpcEndPoint、RpcService、RpcServer、GateWay三个模块。RpcEndPoint:每个组件的基本实现,主要包含原创 2021-12-20 20:28:23 · 1467 阅读 · 1 评论 -
flink asyncio 理论与实现
异步IO原创 2021-04-17 11:30:44 · 136 阅读 · 0 评论