目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:464.7k

收藏
全部开发者教程

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(200)
赞(0)

状态相关

状态概述

在 Flink 中,算子任务可以分为无状态和有状态两种情况。

  • 无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果。

  • 有状态

    • ==首先搞明白什么是状态?==:流式计算的数据往往是转瞬即逝, 真实业务场景不可能说所有的数据都是进来之后就走掉,没有任何东西留下来,那么留下来的其实就是状态(state)。在Flink中,也可以这样理解State:task/operator在某时刻的一个中间结果。
    • 在Apache Flink架构体系中,有状态计算可以说是Flink非常重要的特征之一。有状态计算是指在程序计算过程中,在Flink程序内部,存储计算产生的中间结果,并提供给Functions 或 算子计算使用。

    有状态算子处理主要有两个步骤:

    1.获取当前状态

    2.根据具体的业务逻辑进行计算,使用计算后的结果更新当前状态。

有状态计算案例分析:

为什么Flink知道之前已经处理过一次 'a'和'b'?

原因就是 state发挥作用了,它 存储了之前统计后的结果数据,所以Flink 程序知道'a'和'b'词频。

扩展:Apache Flink作为一个计算框架,提供了有状态的计算,封装了一些底层的实现,比如状态的高效存储、Checkpoint和Savepoint持久化备份机制、计算资源扩缩容等问题。因为Flink接管了这些问题,开发者只需调用Flink API,这样可以更加专注于业务逻辑。

思考:为什么流式计算中需要State状态呢?

  1. 与批计算相比,==State是流计算特有的==,批计算没有failover机制,要么成功,要么重新计算。
  2. 流计算在大多数场景下是==增量计算,数据逐条处理(大多数场景),每次计算是在上一次计算结果之上进行处理的==,这样的机制势必要将上一次的计算结果进行存储(生产模式要持久化;
  3. 另外由于机器、网络、脏数据等原因导致的程序错误,在==重启job时候需要从成功的检查点(checkpoint)进行state的恢复==。增量计算,Failover这些机制都需要state的支撑。

代码参考:

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2