build 方法中除了构造了几个对象以外,重点执行了 OperatorStateRestoreOperation 的 restore 方法,restore 方法就是恢复流程。 先介绍 OperatorStateRestoreOperation 类中两个重要的 Map: registeredOperatorStates 用于保存 StateName 和 ListState 的映射关系; registeredBroadcastStates 用于保存 StateName 和 BroadcastState...
// 根据 restoreStateHandles 决定三种恢复模式:// 1、 RocksDB 直接启动无需恢复// 2、 增量 Checkpoint 的 RocksDB 恢复// 3、 全量 Checkpoint 的 RocksDB 恢复privateAbstractRocksDBRestoreOperation<K>getRocksDBRestoreOperation(){// restoreStateHandles 为空表示没有 State 需要恢复,构造 NoneRestoreOperati...
提高I/O效率: 链接的算子可以共享一个任务的输入和输出,以及状态后端(state backend)。这意味着对于链接的算子,它们读取的数据更倾向于在高速缓存区中,而不是频繁地从内存或磁盘中加载。 减少线程切换成本: 在同一个线程中串联执行多个任务避免了线程切换的成本。线程切换通常涉及到保存和恢复线程的上下文,这些都会消...
while (true) { ExecutionState current = this.executionState; ///如果当前的执行状态为CREATED,则将其设置为DEPLOYING状态 if (current == ExecutionState.CREATED) { if (transitionState(ExecutionState.CREATED, ExecutionState.DEPLOYING)) { // success, we can start our work break; } } //如果当前执行...
见:Flink源码——Job 提交、部署流程源码分析之Task 部署、提交、執行(一) flushAll();代码 currentPeriodicTrigger.cancel(false); RegionPartitionReleaseStrategy 提交 获取到 JobEdge 链接的 IntermediateResult 因为是 Job 恢复,所以要从最近一次的 快照中,执行 Task 的 state restore ...
顺便,前面也提到了,在进行checkpoint之前,operator初始化时,会执行一个initializeState方法,在该方法中,如果task是从失败中恢复的话,其保存的state也会被restore进来。 传递barrier是在进行本operator的statesnapshot之前完成的,我们先来看看其逻辑,其实和传递一条数据是类似的,就是生成一个CheckpointBarrier对象,然后向每个...
顺便,前面也提到了,在进行checkpoint之前,operator初始化时,会执行一个initializeState方法,在该方法中,如果task是从失败中恢复的话,其保存的state也会被restore进来。 传递barrier是在进行本operator的statesnapshot之前完成的,我们先来看看其逻辑,其实和传递一条数据是类似的,就是生成一个Checkpoi...
FlinkKafkaConsumer是FlinkKafkaConsumerBase类型的,openFunction方法会调用到org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase#open方法,在该方法中会使用partitionDiscoverer获取到分区信息,然后尝试去state中获取,如果restoreState不为空则将partition信息与restoreState进行同步,将放入到subscribedPartitionsTo...
flink源码解析-flink获取streamGraph流图 2. 获取StreamGraph 3. 获取StreamGraph生成器 4. 生成StreamGraph 5. transform 5.1. StreamSource 5.1.1. streamGraph添加source 5.2. ContinuousFileReader 5.2.1. streamGraph添加Operator 5.2.2. streamGraph添加Edge 5.3. StreamMap 5.3.1. streamGraph添加Operator 5.3....
从源码来看 Flink 提交作业并调度执行 从提交来一步一步分析,本文源码基于Apache社区 1.8-release 版本 REST提交作业流程: 1.集群启动后 通过 /jars/upload 向集群提交可执行jar文件 2.通过 /jars/:jarid/run 来启动一个job 1.构建并提交JobGraph 我们直接找到WebSubmissionExtension这个类,在StandaloneSession ...