Flink作为流批统一的计算框架,在1.10中完成了大量batch相关的增强与改进。1.10可以说是第一个成熟的生产可用的Flink Batch SQL版本,它一扫之前Dataset的羸弱,从功能和性能上都有大幅改进,以下我从架构、外部系统集成、实践三个方面进行阐述。
架构
Stack
首先来看下stack,在新的Blink planner中,batch也是架设在Transformation上的,这就意味着我们和Dataset完全没有关系了:
- 我们可以尽可能的和streaming复用组件,复用代码,有同一套行为。
- 如果想要Table/SQL的toDataset或者fromDataset,那就完全没戏了。尽可能的在Table的层面来处理吧。
- 后续我们正在考虑在DataStream上构建BoundedStream,给DataStream带来批处理的功能。
网络模型
Batch模式就是在中间结果落盘,这个模式和典型的Batch处理是一致的,比如MapReduce/Spark/Tez。
Flink以前的网络模型也分为Batch和Pipeline两种,但是Batch模式只是支持上下游隔断执行