栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Flink

Flink

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

状态:

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

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

无状态算子: map

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

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

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

没keyBy前的算子状态:

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

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

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

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

    联合列表状态(Union List State)

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

    广播状态

    广播状态是MapState

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

keyBy后的键控状态:

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

    ValueState 保存单个的值

    get 操作: .value( )set 操作: .update(T value)

    ListState 保存一个List集合

    IterableListState.get( ).update(List values).add(T value)ListState.addAll(List values)

    MapState 保存K-V对

    .get(UK key).put(UK key, UV value).contains(UK key).remove(UK key)

    ReducingState 同时得传入reduce聚合操作逻辑, 每添加数据时便会调用它, 只保存聚合后的结果

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

.clear( )是清空操作

API-声明一个状态:
@Override
public void open (Configuration parameters) throws Exception {
    lastTempState = getRuntimeContext( ).getState(new ValueStateDescriptor("last-temp", Double.class, Double.MIN_VALUE));
}

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

状态后端(StateBackend):

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

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

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

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

    org.apache.flink
        flink-statebackend-rocksdb_2.12
    1.10.1
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号