Flink_05_状态(个人总结)

2023-11-20

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

状态:

状态就是一块内存, 一个变量, 如果要访问历史窗口(或批次)的数据时就需要用到状态, 把历史窗口(或批次)的数据处理结果值保存到状态里;

并且带有自动做检查点存储的功能

无状态算子: map

有状态算子: sum, reduce 后面数据需要用到前面数据的聚合中间结果

无状态的计算一般是基于一个独立事件输出结果, 如温度超过90度时发出警告

有状态的计算一般是基于多个事件输出结果, 如一分钟内收到两个差值超过20度的温度发出警告

没keyBy前的算子状态:

没keyBy前的算子状态 对于Task内部(SubTask之间)是共享的, 4个sumTask, 那么每个sumTask就是SubTask, 它们属于同一个Task

定义一个没keyBy前的算子状态, 得实现ListCheckedPoint接口

  1. **列表状态(**List State)

    状态数据用一个List存储, 程序恢复时, 将List拆分成一个个 单个元素 分发给各个TaskManager

  2. 联合列表状态(Union List State)

    状态数据用一个List存储, 但程序恢复时, 将List分别发给各个TaskManager, 让他们自己去里面挑, 这个不好

  3. 广播状态(BroadcastState)

    广播状态的创建要借助MapState

    广播流: A流有1个分区, B流有4个分区, B流要用到A流的数据, 所以需要将A流1个分区的数据广播到B流的4个分区, 用的状态类型是MapState

keyBy后的键控状态:

keyBy后的键控状态对于同key事件是共享的

  1. ValueState<T> 保存单个的值

    • get 操作: .value( )
    • set 操作: .update(T value)
  2. ListState<T> 保存一个List集合

    • Iterable<T> ListState.get( )
    • .update(List<T> values)
    • .add(T value)
    • ListState.addAll(List<T> values)
  3. MapState<K, V> 保存K-V对

    • .get(UK key)
    • .put(UK key, UV value)
    • .contains(UK key)
    • .remove(UK key)
  4. ReducingState<T> 同时得传入reduce聚合操作逻辑, 每添加数据时便会调用它, 只保存聚合后的结果

  5. AggregatingState<I, O> 自定义聚合操作逻辑, 类似于ReducingState但比其更复杂些, 得实现更多方法

.clear( )是清空操作

API-声明一个状态:

@Override
public void open (Configuration parameters) throws Exception {
    lastTempState = getRuntimeContext( ).getState(new ValueStateDescriptor<Double>("last-temp", Double.class, Double.MIN_VALUE));
}

从checkpoint恢复时并行度改变, 状态如何重新分配?

算子状态:

  1. ListState: 将原先所有State中的元素均匀划分给新的Task
  2. Union List State: 将原先所有State中的元素全部发给新的Task, 每个Task都拥有全量数据
  3. BroadState State: 将原先所有State中的元素全部发给新的Task, 每个Task都拥有全量数据

键控状态:

Key被Redistribute到哪个Task, 对应的Keyed State就被Redistribute到哪个Task

基于Key Group来做分配:

  1. numOfKeyGroups=maxParallelism

  2. 将key分为group (KeyGroup = hash(key)%numOfKeyGroups)

  3. 将group分配给task实例

RocksDB: 基于LSM(内存+磁盘)结构的存储系统

状态后端(StateBackend):

负责管理状态, 以及做检查点存储

  1. MemoryStateBackend 状态在内存, 检查点存在内存

  2. FsStateBackend 状态在内存, 检查点存在远程FileSystem

  3. RocksDBStateBackend 状态在内存, 检查点存在本地RocksDB

    <groupId>org.apache.flink</groupId>
        <artifactId>flink-statebackend-rocksdb_2.12</artifactId>
    <version>1.10.1</version>
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flink_05_状态(个人总结) 的相关文章

随机推荐

  • Keil5无法进入debug(卡死在启动文件)

    Keil5无法进入debug 卡死在启动文件 出现的情况 运行一直卡死在启动文件 例如startup stm32f103xe s 而主程序的箭头也只有一个 两个箭头的运行行在启动文件 debug一直无法运行 解决办法 你在程序中使用了pri
  • Qml与C++交互4:C++信号与Qml的槽函数的连接

    Qml与C 交互4 C 信号与Qml的槽函数的连接 使用场景 整体思路 1 建立C 信号 2 C 实例注册到qml 3 qml中建立槽函数 Connections 类型 建立槽函数 运行结果 使用属性 更多资讯 知识 微信公众号搜索 上官宏
  • OpenCV项目编译错误

    编译遇到如下错误 opencv 3 4 4 modules highgui src window gtk cpp 1062 error 218 No OpenGL support Library was built without Open
  • 长春地铁一号线作业

    长春一号线作业 代码如下 public class 第一次作业 public static void main String args System out println 北环城站 一匡街 胜利公园 解放大路 工农广场 卫星广场 华庆路
  • 卡尔曼及扩展卡尔曼滤波详细推导-来自DR_CAN视频

    卡尔曼及扩展卡尔曼滤波详细推导 来自DR CAN视频 见知乎https zhuanlan zhihu com p 585819291
  • Pytorch权重初始化方法——Kaiming、Xavier

    Pytorch权重初始化方法 Kaiming Xavier 结论 结论写在前 Pytorch线性层采取的默认初始化方式是Kaiming初始化 这是由我国计算机视觉领域专家何恺明提出的 我的探究主要包括 为什么采取Kaiming初始化 考察K
  • window10 设置 cmd 与 PowerShell 格式UTF-8

    win R键 输入 regedit 进入 如果进入不了就去下载 regedit cmd 接下来我们进入对应目录添加对应字符串 好了我们重启vscode运行即可 PowerShell 原CodePage数值数据 更改CodePage数值数据
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • WIN10 系统,笔记本电脑显示 “未检测到摄像头”

    笔记本电脑无缘无故不能使用摄像头了 在打开腾讯会议的时候显示 未检测到摄像头 检测设备是否连接 打开设备管理器发现没有 照相机 这个选项 并且在狠心下载360卫士进行系统修复后和驱动检测发现不是驱动的问题之后 摄像头仍然无法使用 在尝试多种
  • 如何使用Minio进行对象存储和数据管理

    Minio是一个开源的对象存储服务器 可用于存储和管理各种类型的数据 包括图像 视频 文档等等 本文将介绍如何安装和配置Minio 使用Minio进行对象存储 以及如何利用Minio的高级功能和解决常见问题 一 简介 1 1 什么是Mini
  • 【Linux 应用】网络相关开发---ip、网关、掩码、dns、mac的获取和设置,以及dhcp动态获取

    最近开始调试Linux 的测试版 需要开发网络设置相关功能 其实这一块以前也做过 但是都忘记了 可见沉淀的重要性 1 ip 掩码设置和获取 通过int ioctl int d int request 这个函数可以获取到 其中 IP设置 SI
  • C语言算法题之二叉树的路径和

    思路 二叉树顾名思义就是一个最多有两个子节点的数据结构 如下图所示 其中像数字7和8 5和6这四个节点都叫做叶子节点 其他的节点都是叫做根节点 路径有 1 2 4 7 路径和为1 2 4 7 14 1 2 4 8 路径和为1 2 4 8 1
  • 算法 - 前缀树

    目录 一 前缀树含义 二 代码实现 一 前缀树实现 方式一 方式二 二 暴力实现 一 前缀树含义 前缀树 把一个 最小 单位的数据看成一个节点到另一个节点的路径 每个节点有两个属性 一个是所有数据经过这个节点的次数pass 一个是这个节点作
  • CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below m...

    CUDA内核错误可能会在其他API调用时异步报告 因此下面的堆栈跟踪可能是不正确的 为了调试 考虑传递CUDA LAUNCH BLOCKING 1 这个错误提示告诉你 你在使用CUDA进行计算的时候可能会出现内核错误 并且这些错误可能在其他
  • CVPR ICCV ECCV 论文列表 // 研究机构 链接

    文章目录 会议 CVPR 一年一次 IEEE Conference on Computer Vision and Pattern Recognition ICCV 两年一次 奇数年 IEEE International Conference
  • 【第38篇】MixConv:混合深度卷积核

    文章目录 摘要 1 简介 2 相关工作 3 MixConv 3 2 MixConv 设计选择 3 3 MobileNets 上的 MixConv 性能 3 4 消融研究 4 MixNet 4 1 架构搜索 4 2 ImageNet 上的 M
  • Linux离线安装 RabbitMQ(RabbitMQ单机安装)

    1 下载erlang和rabbitmq安装包 1 下载Erlang路径 https github com erlang otp releases 2 下载RabbitMQ路径 https github com rabbitmq rabbit
  • SQL查询与修改数据库逻辑文件名,移动数据库存储路径示例

    Author htl258 Tony Date 2010 06 26 21 51 30 Version Microsoft SQL Server 2008 RTM 10 0 1600 22 Intel X86 Jul 9 2008 14 4
  • 万向锁,简单表述,一文看懂

    万向锁问题 看了下百度知乎 居然 很少有说清楚的 想起自己第一次接触的时候 也是一头雾水 特此解释 1 什么是万向锁问题 欧拉角顺序有很多 当中比较常用的 一种 便是用 偏航 俯仰 滚转 yaw pitch roll 三个角度来描述一个旋转
  • Flink_05_状态(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 状态 状态就是一块内存 一个变量 如果要访问历史窗口 或批次 的数据