Flink目前有两套算子体系,DataStream和DataSet,未来会用DataStream取代DataSet算子实现批流算子的统一。
一、算子行为
1、生命周期管理(StreamTask类管理算子的生命周期)
(1)setup
初始化环境,时间服务,注册监控
(2)open
算子的初始化逻辑,比如状态的初始化
(3)close
所有的数据处理完毕之后关闭算子,此时需要确保将所有的缓存数据向下游发送。
(4)dispose
算子生命周期最后一步,是close之后执行,主要用于资源的释放
2、状态与容错管理
算子负责状态管理,提供状态的存储,触发检查点的时候,保存状态快照,异步保存到外部的分布式存储中。当作业失败的时候算子负责从保存的快照中恢复状态
3、数据处理
对数据处理,同时支持Watermark和Latencymarker的处理。针对单流输入和双流输入,定义了不同的接口
(1)OneInputStreamOperator(单输入算子)
public interface OneInputStreamOperator<IN, OUT> extends StreamOperator<OUT> {
//数据处理
void processElement(StreamRecord<IN> element) throws Exception;
//Watermark处理
void processWatermark(Watermark mark) throws Exception;
//LatencyMarker的处理
void processLatencyMarker(LatencyMarker latencyMarker) throws Exception;
}
(2)TwoInputStreamOperator(双流输入算子)
public interface TwoInputStreamOperator<IN1, IN2, OUT> extends StreamOperator<OUT> {
//流1数据处理
void processElement1(StreamRecord<IN1> element) throws Exception;
//流2数据处理
void processElement2(StreamRecord<IN2> element) throws Exception;
//流1 Watermark处理
void processWatermark1(Watermark mark) throw

本文深入探讨Flink的算子行为,包括生命周期管理、状态与容错机制,以及Flink和Blink算子的差异。讲解了数据处理、异步算子的工作模式,并详细阐述了同步和异步访问模式如何影响系统性能。
最低0.47元/天 解锁文章
511

被折叠的 条评论
为什么被折叠?



