首页 > 其他分享 >Flink - [06] 状态管理

Flink - [06] 状态管理

时间:2024-06-17 16:56:00浏览次数:27  
标签:状态 06 Flink 键控 访问 state 算子

题记部分

 

一、Flink中的状态

由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态。

可以认为状态就是一个本地变量,可以被任务的业务逻辑访问。

Flink会进行状态管理,包括状态一致性、故障处理以及高效存储和访问,以便开发人员可以专注于应用程序的逻辑

在Flink中,状态始终与特定算子相关联,为了使运行时的Flink了解算子的状态,算子需要预先注册其状态。

总的来说,有两种类型的状态:

(1)算子状态(Operator State):算子状态的作用范围限定为算子任务

(2)监控状态(Keyed State):根据输入数据流中定义的键(key)来维护和访问

 

二、算子状态

(1)算子状态的作用范围限定为算子任务,由同一并行任务所处理的所有数据都可以访问到相同的状态

(2)状态对于同一任务而言是共享的

(3)算子状态不能由相同或不同算子的另一个任务访问

 

2.1、算子状态数据结构

(1)列表状态(List State):将状态表示为一组数据的列表

(2)联合列表状态(Union list state):也将状态表示为数据的列表。它与常规列表状态的区别在于,在发生故障时,或者从保存点(savepoint)启动应用程序时如何恢复

(3)广播状态(Broadcast state):如果一个算子有多项任务,而它的每项任务状态又都相同,那么这种特殊情况最适合应用广播状态。

 

 

三、键控状态

(1)键控状态是根据输入数据流中定义的键(key)来维护和访问的。

(2)Flink为每个key维护一个状态实例,并将具有相同键的所有数据,都分区到同一个算子任务中,这个任务会维护和处理这个key对应的状态。

(3)当任务处理一条数据时,它会自动将状态的访问范围限定为当前数据的key

 

3.1、键控状态数据结构

(1)值状态(Value state):将状态表示为单个的值

(2)列表状态(List state):将状态表示为一组数据的列表

(3)映射状态(Map state):将状态表示为一组Key-Value对

(4)聚合状态(Reducing state & Aggregating State):将状态表示为一个用于聚合操作的列表

 

3.2、键控状态的使用

(1)声明一个键控状态

lazy val lastTemp: ValueState[Double] = getRuntimeContext.getState[Double](
    new ValueStateDescriptor[Double]("lastTemp", classOf[Double])
)

(2)读取状态

val prevTemp = lastTemp.value()

(3)对状态赋值

lastTemp.update(value.temperature)

 

 

四、状态后端(State Backends)

  每传入一条数据,有状态的算子任务都会读取和更新状态。由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务都会在本地维护其状态,以确保快速的状态访问。状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)

  状态后端主要负责两件事:本地的状态管理,以及将检查点(checkpoint)状态写入远程存储

 

4.1、状态后端的类型

(1)MemoryStateBackend

  内存级的状态后端,会将键控状态作为内存中对象进行管理,将它们存储在TaskManager的JVM堆上,而将checkpoint存储在JobManager的内存中。特点:快速、低延迟,但不稳定

(2)FsStateBackend

  将checkpoint存储到远程的持久化文件系统(FileSystem)上,而对于本地状态,跟MemoryStateBackend一样,也会存在TaskManager的JVM堆上。特点:同时拥有内存级的本地访问四度,和更好的容错保证。

(3)RocksDBStateBackend

  将所有状态序列化后,存入本地的RocksDB中存储

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

标签:状态,06,Flink,键控,访问,state,算子
From: https://www.cnblogs.com/houhuilinblogs/p/18252672

相关文章

  • UML_行为类_状态图
    状态图状态图反映的是状态变化和事件之间的关系包含元素状态(开始状态,结束状态,和中间状态),开始状态用实心圆表示,结束用圆环套实心圆表示,中间状态用圆角矩形表示状态名状态变量状态活动entry:进入这个状态的时候触发exit:退出这个状态的时候触发do:这个状态的过程中会执......
  • Flink - [05] 时间语义 & Watermark
    题记部分 一、时间语义Flink中的时间语义分为以下,(1)EventTime:事件创建的时间(2)IngestionTime:数据进入Flink的时间(3)ProcessingTime:执行操作算子的本地系统事件,与机器相关 哪种时间语义更重要?不同的时间语义有不同的应用场合,我们往往更关心事件时间(Event Time)某些......
  • dart最新2024.06.17
    import'package:flutter/material.dart';voidmain(){runApp(constMyApp());}classMyAppextendsStatelessWidget{constMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){returnconstMaterialApp(title:&......
  • git学习笔记——202406171525
    想将本地仓库代码提交到远程仓库,应注意:如果在新建远程仓库时里面还新建了文件,在本地提交代码时会显示两个分支是冲突的,git认为是两个不相关的仓库代码,会拒绝上传。解决方法是gitpullremotemaster拉取远程代码到本地,然后再gitpushremote-umaster相关链接:https://www.cn......
  • Flink - [03] API
    使用scala编写flinkapi从不同的数据源(源端)读取数据,并进行无界流/有界流的数据处理,最终将处理好的数据sink到对应的目标端 一、maven配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.or......
  • DSP技术及应用的综合项目:串口与按键控制直流电机运行及液晶屏显示状态 芯片是TMS320F2
    目录绪论串口与按键控制直流电机运行及液晶屏显示状态一、实验目的及要求二、实验原理三、实验软硬件环境四、实验过程(实验步骤、记录、数据、分析)五、测试/调试及实验结果分析六、实验结论与体会内容说明参考资料绪论随着科技的飞速发展,数字信号处理器(DSP)在现代......
  • P10602 [CEOI 2009] Harbingers 题解
    小清新数据结构优化dp。思路考虑基本的dp式。\[\begin{aligned}f_{x}&=w_{x}+\max_{i是x的祖先}v_{x}\times(dep_{x}-dep_{i})+f_i\\&=w_{x}+v_{x}\timesdep_{x}+\max_{i是x的祖先}-dep_{i}\timesv_{x}+f_i\end{aligned}\]发现\(-dep_{i}\timesv_{x}+f_i\)是......
  • 2024.06 别急记录
    1.Ynoi2009-rprsvq首先有方差\(=\dfrac{n-1}{n^2}\suma_i^2-\dfrac2{n^2}\suma_ia_j\)。还有结论:对于大小为\(n\)的集合\(S\),所有\(\dbinomnt\)个大小为\(t\)的子集中,含有给定大小为\(k\)的子集的集合个数为\(\dbinom{n-k}{t-k}\)。那么一个序列\(a_1,...,a......
  • [转]32th@C++ 20新特性之线程与jthread@20240617
    C++20新特性之线程与jthread为什么要引入jthread在C++11中,已经引入了std::thread。std::thread为C++标准库带来了一流的线程支持,极大地促进了多线程开发的便利性。但std::thread也存在一些明显的不足和短板,主要有以下几点。1、生命周期管理的复杂性。std::thread对象必须在它......
  • 程序员修炼之道:从小工到专家阅读笔记06
    程序需要遵守的实用主义原则。 重复的危害:如果某个事物在代码中重复多次,就可能会在维护过程中带来问题,因为改动了一处而忘记改动另一处造成自相矛盾。这加大了维护难度。要遵守DRY原则,即Don’trepeatyourself。重复通常由这些东西引起:强加的重复,由文档或用户需求决定。这通......