Flink-执行逻辑
一.简介
Flink是一个用于状态化并行流处理的分布式系统。分布式系统需要应对的常见挑战包括分配合管理集群计算资源,进程协调,持久且高可用的数据存储及故障恢复等等。
Flink在已经有的集群基础设施和服务之上专注于它的核心功能——分布式数据流处理。Flink和很多集群管理器(Yarn、Kubernetes等)都能很好地集成;同时它也可以通过配置,作为独立集群来运行,Flink没有提供分布式持久化存储,而是利用现有的分布式文件系统(HDFS)。它依赖ZooKeeper来完成高可用性设置中领导选举工作。
二.组件
JobManager
作为主进程(master process),JobManager控制着单个应用程序的执行。换句话说,每个应用都由一个不同的JobManager掌控。JobManager接收需要执行应用,该应用包含一个所谓JobGraph,即逻辑Dataflow图,以及一个打包了全部所需类、库以及其他资源JAR文件。
JobManager将JobGraph转化成名为ExecutionGraph物理Dataflow图,该图包含了那些可以并行执行的任务。
JobManager从ResourceManager申请执行任务的必要资源(TaskManager处理槽)。一旦它收到足够数量TaskManager处理槽(slot),就会将ExecutonGraph中的任务分发给TaskManager来执行。
ResourceManager
针对不同环境和资源提供者,(如Yarn、Mesos、Kub