Flink 原理、实战与性能优化 (8):Apache Flink 介绍 1.4.2

阅读数:16 2019 年 12 月 11 日 20:40

Flink原理、实战与性能优化(8):Apache Flink介绍 1.4.2

(基本架构图)

内容简介
这是一部以实战为导向,能指导读者零基础掌握 Flink 并快速完成进阶的著作,从功能、原理、实战和调优等 4 个维度循序渐进地讲解了如何利用 Flink 进行分布式流式应用开发。作者是该领域的资深专家,现就职于第四范式,曾就职于明略数据。
全书一共 10 章,逻辑上可以分为三个部分:
第一部分(第 1~2 章)
主要介绍了 Flink 的核心概念、特性、应用场景、基本架构,开发环境的搭建和配置,以及源代码的编译。
第二部分(第 3~9 章)
详细讲解了 Flink 的编程范式,各种编程接口的功能、应用场景和使用方法,以及核心模块和组件的原理和使用。
第三部分(第 10 章)
重点讲解了 Flink 的监控和优化,参数调优,以及对反压、Checkpoint 和内存的优化。

Flink 系统架构设计如图 1-6 所示,可以看出 Flink 整个系统主要由两个组件组成,分别为 JobManager 和 TaskManager,Flink 架构也遵循 Master-Slave 架构设计原则,JobManager 为 Master 节点,TaskManager 为 Worker(Slave)节点。所有组件之间的通信都是借助于 Akka Framework,包括任务的状态以及 Checkpoint 触发等信息。

(1)Client 客户端

客户端负责将任务提交到集群,与 JobManager 构建 Akka 连接,然后将任务提交到 JobManager,通过和 JobManager 之间进行交互获取任务执行状态。客户端提交任务可以采用 CLI 方式或者通过使用 Flink WebUI 提交,也可以在应用程序中指定 JobManager 的 RPC 网络端口构建 ExecutionEnvironment 提交 Flink 应用。

Flink原理、实战与性能优化(8):Apache Flink介绍 1.4.2

图 1-6 Flink 基本架构图

(2)JobManager

JobManager 负责整个 Flink 集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中 TaskManager 上 TaskSlot 的使用情况,为提交的应用分配相应的 TaskSlots 资源并命令 TaskManger 启动从客户端中获取的应用。JobManager 相当于整个集群的 Master 节点,且整个集群中有且仅有一个活跃的 JobManager,负责整个集群的任务管理和资源管理。JobManager 和 TaskManager 之间通过 Actor System 进行通信,获取任务执行的情况并通过 Actor System 将应用的任务执行情况发送给客户端。同时在任务执行过程中,Flink JobManager 会触发 Checkpoints 操作,每个 TaskManager 节点收到 Checkpoint 触发指令后,完成 Checkpoint 操作,所有的 Checkpoint 协调过程都是在 Flink JobManager 中完成。当任务完成后,Flink 会将任务执行的信息反馈给客户端,并且释放掉 TaskManager 中的资源以供下一次提交任务使用。

(3)TaskManager

TaskManager 相当于整个集群的 Slave 节点,负责具体的任务执行和对应任务在每个节点上的资源申请与管理。客户端通过将编写好的 Flink 应用编译打包,提交到 JobManager,然后 JobManager 会根据已经注册在 JobManager 中 TaskManager 的资源情况,将任务分配给有资源的 TaskManager 节点,然后启动并运行任务。TaskManager 从 JobManager 接收需要部署的任务,然后使用 Slot 资源启动 Task,建立数据接入的网络连接,接收数据并开始数据处理。同时 TaskManager 之间的数据交互都是通过数据流的方式进行的。

可以看出,Flink 的任务运行其实是采用多线程的方式,这和 MapReduce 多 JVM 进程的方式有很大的区别 Fink 能够极大提高 CPU 使用效率,在多个任务和 Task 之间通过 TaskSlot 方式共享系统资源,每个 TaskManager 中通过管理多个 TaskSlot 资源池进行对资源进行有效管理。

Flink原理、实战与性能优化(8):Apache Flink介绍 1.4.2

购书地址 https://item.jd.com/12518733.html?dist=jd

评论

发布