分布式计算框架,可以对有界 (批) 和无界 (流) 数据进行处理。
State
通过 State 保存有状态算子的计算结果,支持数据的读取、保存、更新、删除,支持 Managed State 和 Raw State,前者由 Flink 负责保存、恢复、自动伸缩,后者则由用户自定,常用于有一些自定义算子,只支持字节需要自己实现序列化和反序列化。
其中的 Managed State 又可以细分为 Operator State 和 Keyed State 两种,后者是针对 KeyedStream 保存的状态。注意,状态是基于本地的,每个算子维护这个算子的状态存储,算子之间不共享。
另外,在执行 CheckPoint 时,会将状态数据保存在 HDFS 远端存储上。
状态迁移
为了处理算子的并行度变化,包括算子实例数或者算子子任务数变化,简单来说,是基于上述的 CheckPoint 机制从远端恢复状态。