近期,由于项目需要,对于基于docker进行flink job部署进行了小规模测试,顺便对于flink运行机制进行了深入的了解。
为了达到快速部署和基础环境稳定的目的,考虑使用docker部署(k8s基础环境搭建复杂,调研中未使用),参考官方文档如下:
Docker | Apache Flink
flink部署模式有下列三种:
- session,全局单一cluster,所有的job运行于单一集群,全局只有一个job manager
- application,每个job有一个job manager,job manager分配task manager
- per-job,每个job有一个job manager,job manager分配task manager,但job graph由job manager生成
基于docker部署时,不支持per-job mode,我们选择application mode进行部署。
如果选择基于local file进行checkpoint,需要将container内checkpoint所在的目录进行volume至宿主机,保证docker restart时能够从上次的checkpoint开始消费。
使用的基础镜像为flink:1.12.7-scala_2.11-java8
在per-job mode中,我们向job manager传递parallelism.default参数,指定该job需要的task slot总数,然后由yarn或者但在docker部署中,由于缺失统一的资源调度工具,只能手动设置task manager的scale和taskmanager.numberOfTaskSlots,保证task manager的数量,缺乏扩容能力。因此,在生产环境部署中,推荐使用native k8s + application mode部署flink任务。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)