Flink部署模式的调研(看完你就知道你公司适合哪种)
2020-12-02 本文已影响0人
FishMAN__
一、调研的三种模式:
1、Flink On Yarn
(1)PerJob模式
一个任务一个集群
(2)Session模式
多个任务一个Session,可以启多个Session
2、Standlone模式
多个任务一个集群,可以启动多个集群,还可以在每个节点另起多个taskmanager
二、不同模式的对比
perjob_yarn | session_yarn | standlone_cluster | 占优 | |
---|---|---|---|---|
集群 | 一个任务一个集群 | 多个任务一个集群,可以有多个集群 | 一个集群 | perjob_yarn > session_yarn > standlone_cluster****session_yarn相比于perjob更加美观,相比于standlone启多个集群更优雅 |
分配tm/jm内存,slot | 随意配置 | 启动session时被限定 | 启动集群时被限定 | perjob_yarn > session_yarn = standlone_cluster |
启动任务 | 单独启动 | 提交任务到指定session | 提交任务到集群 | 持平 |
任务恢复 | 单独启动 | 单个任务出问题单独启动;session挂掉全部任务重启 | 单个任务出问题单独启动;集群挂掉需要全部任务重启 | perjob_yarn > session_yarn = standlone_cluster |
恢复时长 | 单独恢复、速度快 | 1、单个任务失败单独恢复;2、session挂掉或因一个任务影响到session挂掉则恢复时长依赖脚本,一旦脚本异常,手动单个恢复耗时长;3、目前稳定性不高,目前我们配置了高可用,好像不适合于session | 1、单个任务失败单独恢复;2、集群挂掉任务全部启动3、高可用 | perjob_yarn > session_yarn = standlone_cluster |
恢复粒度 | 一 | 一 / 多 | 一 / 多 | perjob_yarn > session_yarn = standlone_cluster |
日志 | 单独日志 | 所有在session启动的任务都在一个jobmanager的日志中查看。yarn会帮你收集jobmanager和taskmanager的日志 | 所有在集群中启动的任务都在master节点中的flink-root-standalonesession-.log日志中查看。想看task的日志需要到对应的woker节点去看,不方便 | perjob_yarn > session_yarn > standlone_cluster |
监控 | yarn + flink rest api | sessionId + flink rest api | jobid | **On yarn **优于 standlone_cluster |
注意:
-
session模式根据我在jira提了一个区分不同任务的日志的bug,根据回复者做了一些尝试都失败,目前暂时也没有其他的有效办法。
详情见jira的FLINK-19768 传送链接。 -
perjob和session模式需要依赖于Yarn,所以还需要多了其他的组件的监控,除了这一个弊端更建议On Yarn。