文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

终于有人把 Flink 设计理念与基本架构讲明白了

2024-12-02 12:15

关注

图1 Hadoop MapReduce处理模型

Hadoop MR1 通过JobTracker进程来管理作业的调度和资源,TaskTracker进程负责作业的实际执行,通过Slot来划分资源(CPU、内存等),Hadoop MR1存在资源利用率低的问题。Hadoop MR2 为了解决MR1存在的问题,对作业的调度与资源进行了升级改造,将JobTracker变成YARN,提升了资源的利用率。其中,YARN 的ResourceManager 负责资源的管理,ApplicationMaster负责任务的调度。YARN 支持可插拔,不但支持Hadoop MapReduce,还支持Spark、Flink、Storm等计算框架。Hadoop MR2 解决了Hadoop MR1的一些问题,但是其对HDFS的频繁I/O操作会导致系统无法达到低延迟的要求,因而它只适合离线大数据的处理,不能满足实时计算的要求。

2. Spark

Spark 是由加州大学伯克利分校开源的类Hadoop MapReduce的大数据处理框架。与 Hadoop MapReduce相比,它最大的不同是将计算中间的结果存储于内存中,而不需要存储到HDFS中。

Spark的基本数据模型为RDD(Resilient Distributed Dataset,弹性分布式数据集)。RDD是一个不可改变的分布式集合对象,由许多分区(partition)组成,每个分区包含RDD的一部分数据,且每个分区可以在不同的节点上存储和计算。在Spark 中,所有的计算都是通过RDD的创建和转换来完成的。

Spark Streaming 是在Spark Core的基础上扩展而来的,用于支持实时流式数据的处理。如图2所示,Spark Streaming 对流入的数据进行分批、转换和输出。微批处理无法满足低延迟的要求,只能算是近实时计算。

图2 Spark Streaming 处理模型

Structured Streaming 是基于Streaming SQL 引擎的可扩展和容错的流式计算引擎。如图3所示,Structured Streaming将流式的数据整体看成一张无界表,将每一条流入的数据看成无界的输入表,对输入进行处理会生成结果表。生成结果表可以通过触发器来触发,目前支持的触发器都是定时触发的,整个处理类似Spark Streaming的微批处理;从Spark 2.3开始引入持续处理。持续处理是一种新的、处于实验状态的流式处理模型,它在Structured Streaming的基础上支持持续触发来实现低延迟。

图3 Structured Streaming处理模型

3. Flink

Flink是对有界数据和无界数据进行有状态计算的分布式引擎,它是纯流式处理模式。流入Flink的数据会经过预定的DAG(Directed Acyclic Graph,有向无环图)节点,Flink会对这些数据进行有状态计算,整个计算过程类似于管道。每个计算节点会有本地存储,用来存储计算状态,而计算节点中的状态会在一定时间内持久化到分布式存储,来保证流的容错,如图4所示。这种纯流式模式保证了Flink的低延迟,使其在诸多的实时计算引擎竞争中具有优势。

图4 Flink 流式处理模型

二.Flink基本架构

下面从分层角度和运行时角度来介绍Flink 基本架构。其中,对于运行时Flink 架构,会以1.5版本为分界线对前后版本的架构变更进行介绍。

1. 分层架构

Flink是分层架构的分布式计算引擎,每层的实现依赖下层提供的服务,同时提供抽象的接口和服务供上层使用。整体分层架构如图5所示。

图5 Flink 分层架构

2. 运行时架构

Flink 运行时架构经历过一次不小的演变。在Flink 1.5 版本之前,运行时架构如图6所示。

图6 Flink 1.5 以前版本的运行时架构

从Flink 1.5开始,Flink 运行时有两种模式,分别是Session 模式和Per-Job模式。

Session模式:在Flink 1.5之前都是Session模式,1.5及之后的版本与之前不同的是引入了Dispatcher。Dispatcher负责接收作业提交和持久化,生成多个JobManager和维护Session的一些状态,如图7所示。

图7 Session模式

Per-Job模式:该模式启动后只会运行一个作业,且集群的生命周期与作业的生命周期息息相关, 而Session 模式可以有多个作业运行、多个作业共享TaskManager资源, 如图8所示。

图8 Per-Job模式

关于作者:罗江宇,赵士杰,李涵淼,闵文俊,四位作者都是非常资深的Flink专家,部分作者是Flink源代码的维护者和改造者。

罗江宇:Flink技术专家,先后就职于新浪微博、滴滴和某大型电商公司。先后主导或参与了多家公司的Flink实时计算服务的构建、对超大规模集群的维护以及Flink引擎的改造。拥有丰富的实时计算实战经验,目前专注于Kubernetes调度、Flink SQL及Flink流批一体化方向。

赵士杰:资深大数据技术专家,曾就职于滴滴、阿里巴巴等一线互联网公司。从0到1深度参与了滴滴的大数据建设,拥有非常丰富的大数据平台一线建设经验,对于大数据领域的计算和存储引擎也有深入研究。

李涵淼:大数据研发专家,曾任滴滴大数据开发工程师。从事大数据领域工作多年,参与过多家公司流计算平台的设计与研发,目前专注于流批一体、OLAP技术方向的研究与应用。

闵文俊:蚂蚁集团技术专家、开源大数据社区爱好者、Flink Contributor,在实时计算领域工作多年,深度参与了滴滴、蚂蚁集团的实时计算平台建设。 书评

 

本文摘编于《Flink技术内幕:架构设计与实现原理》,经出版方授权发布。(书号:9787111696292)转载请保留文章来源。

 

来源:数仓宝贝库内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯