版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangguosb/article/details/86553636
State是什么
流计算过程中的中间状态,具体而言,Source的消费位点等元数据,Operator的中间计算结果。
为什么流计算需要State,而批处理不需要?
大多情况下,流计算可以看做是增量计算,即当前数据的处理是基于之前的计算结果进行的,因此需要保存中间的计算结果;批处理是一次性计算,要么成功要么失败,没有中间状态,因此不需要。
State持久化存储
Apache Flink采用同步+异步相结合的方式对State进行存储,如下图所示。State的存储可以分为两阶段,首先同步存储到本地RocksDB,然后异步同步到HDFS。一方面避免了单纯采用内存存储的大小限制及不可靠等限制,另一方面减少了单纯采用分布式存储的IO开销。
参考:
- Apache Flink 漫谈系列(04) - State:https://yq.aliyun.com/articles/667562?spm=a2c4e.11153940.blogcont666056.15.57be17d00M7PZ4