【Flink2020直播课程即将启动,填问卷!赢大礼!】https://c.tb.cn/F3.ZRuUge
邀请5位以上小伙伴一起填写问卷~就能申请获得Flink社区最新第三季专刊礼包哦!赶快上车吧!
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 模式只是支持上下游隔断执行,也就是说资源用量可以不用同时满足上下游共同的并发。但是另外一个关键点是 Failover 没有对接好,1.9 和 1.10 在这方面进行了改进,支持了单点的 Failover。
建议在 Batch 时打开:
jobmanager.execution.failover-strategy = region
为了避免重启过于频繁导致 JobMaster 太忙了,可以把重启间隔提高:
restart-strategy.fix