flink原理分析--flink总体架构

本文深入解析了Apache Flink的架构,包括JobClient、JobManager和TaskManager的角色与职责,阐述了其分布式处理流程及高可用性设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

本文介绍flink的总体架构,通过本文的学习可以对flink的架构有一个总体把握。

总体架构

flink也是典型的master-slave分布式架构,如上图所示。

flink的架构总体来说分为以下几个部分:

  • Job Client
  • Job Manager
  • Task Manager

这几个部分可以部署在不同的机器上,如下图所示:

Flink的大致流程如下:用户编写的执行任务通过JobClient端发送到JobManager,由JobManager把任务发送到后端的TaskManager集群,并对执行过程进行管理,完成后由JobManager把结果发送给JobClient。

Flink的任务执行流程

Job Manager

作业管理器(JobManager)协调和管理程序的执行。 他们的主要职责包括:任务调度,检查点(checkpoints)管理,故障恢复等等。

可以有多个JobManager并行运行并分担这些功能。 这有助于实现高可用性,并通过负载均衡来提高性能。 其中一个JobManager会成为领导者(leader)。 如果领导节点发生故障,其他的其中一个JobManager节点(备用节点)将被选为leader节点。

Task Manager

TaskManager(任务管理器)是工作节点,它在JVM中的一个或多个线程中执行任务。

任务执行的并行性由每个TaskManager上可用的任务槽(task slot)确定。

每个任务(Task)代表分配给任务槽的一组资源。 例如,如果任务管理器有四个插槽,那么它将为每个插槽分配25%的内存。

可以在任务槽中运行一个或多个线程。 同一插槽中的线程共享相同的JVM。 同一JVM中的任务共享TCP连接和心跳消息,如下图所示:

Job Client

作业客户端(Job Client)不是Flink程序执行的内部部分,但它是执行的起点。

作业客户端负责从用户接受程序,然后创建数据流(data flow),然后将数据流提交给作业管理器(JobManager)以进一步执行。

执行完成后,作业客户端将结果提交给用户。 一个数据流是一个执行计划。这里可以理解成pipeline,把多个执行算子组合而成的任务,形成一个dataflow,在这个dataflow中有些可以并行执行。如下图所示:

总结

本文介绍了flink的总体架构,从总体架构上来看,flink是典型的master-slave架构,但flink对master端进行了一些加强的设计,这样能够保证master的高可用性。

参考资料

  • 《mastering apache flink》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值