背景
flink不论运行在哪种环境,例如Yarn,Mesos,Kebernute以及独立集群,每个应用都会包含重要的几个组件,本文就来讲述下flink的主要组件以及如何实现flink的高可用配置
flink主要组件
如图所示,flink主要由Dispatcher,JobManager,ResourceManager,TaskManager是个组件组成,以下我们大概说一下他们的主要用途:
Dispatcher: 主要用于接收提交过来的应用程序Jar包,随后Dispatcher就会启动应用的JobManager开始启动flink引用,备注: 在Yarn中,Dispatcher这个角色的工作由ResourceManager角色完成
JobManager: flink应用的大脑,它负责生成Job Graph,并根据具体的ExecutionGraph申请相应的处理槽来执行任务,此外,他会负责检查点的生成等工作
ResourceManager:资源提供者,通过他可以分配到对应的TaskManager处理槽,这样这些处理槽就可以提供给flink任务使用了
TaskManager: 具体flink并行任务的执行者,他会完成数据的处理工作,比如除了输入记录并输出处理结果
高可用配置
TaskManager挂掉:
当TaskManager挂掉之后,JobManager可以知道运行在上面的任务失败了,此时JobManager就会通过ResourceManager申请另外的处理槽,如果成功,只需要在新申请的处理槽上处理失败的任务即可,如果申请处理槽失败,JobManager将会使用重启的策略尝试着申请足够的处理槽
JobManager挂掉:
JobManager挂掉后,这个flink应用的所有任务都会自动取消掉,JobManager需要从Zookeeper中恢复元数据以及检查点路径等管理职责所需的信息,因此接管的JobManager会完成以下的工作:
1.从zookeeper中获取元数据:包括JobGraph执行图存储路径,Jar文件存储路径以及最新检查点的存储路径等信息
2.重新申请作业执行所需的处理槽,也就是向ResourceManager重新申请处理任务所需的处理槽
3.使用最新检查点数据恢复应用的执行.