Flink部署、使用、原理简介(下)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink部署、使用、原理简介(下)

image.png


image.png


任务执行细节详见


流处理开源框架Flink原理简介和使用


简单使用了flink之后,接下来咱刨析下flink运行的原理


原理介绍


Flink运行组件


image.png


Flink是通过Java和Scala实现的 所以所有组件都运行在Java虚拟机上


  • 作业管理器(JobManager)


  • 控制一个应用程序执行的主进程 每个应用程序都会被一个不同的JobManager所控制执行


  • JobManager会先接受到要执行的应用程序 这个应用程序会包括作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有类、库和其他资源的jar包


  • JobManager会把JobGraph转换成一个物理层面的数据流图 这个图叫做执行图(ExecutionGraph) 包含了所有可以并发执行的任务


  • JobManager 会向资源器 (ResourceManager)请求执行任务必要的资源 也就是任务管理器(TaskManager)上的插槽(slot) 一旦它获取到了足够的资源 就会将执行图分发到真正运行它们的TaskManager上。而在执行的过程中


  • JobManager会负责所有需要中央协调的操作 比如检查点(CheckPoints)的协调


  • 任务管理器(TaskManager)


  • Flink中的工作进程 通过在Flink中会有多个TaskManager运行 每一个TaskManager会包含一定数量的slot插槽。插槽的数量限制了TaskManager能够执行的任务数量


  • 在执行过程中 一个TaskManager可以和其他运行在同一应用程序的TaskManager交换数据


  • 资源管理器(ResouceManager)


  • 主要负责管理任务管理器(TaskManager)的插槽(slot)   TaskManager插槽是Flink中定义的处理资源单元


  • Flink为不同的环境和不同的资源管理工具提供了不同的资源管理器 比如 Yarn、Mesos、K8s、standalone部署


  • 当JobManager申请插槽资源时 ResourceManager会将有空闲插槽的TaskManager分配给JobManager 如果ResourceManager没有足够的插槽来满足JobManager请求 还可以向资源提供平台发起会话 以提供启动TaskManager进程的容器 。ResourceManager还负责终止空闲的TaskManager 释放计算资源


  • 分发器(Dispatcher)


  • 可以跨作业运行 它为应用提交提供了Rest接口


  • 当一个任务被提交时 分发器就会启动并将应用移交给一个JobManager


  • Dispatcher也会启动一个Web UI 用来方便展示和监控作业执行信息


  • Dispatcher在架构中可能不是必须的 取决于应用提交运行的方式


任务提交流程


image.png


  • Flink 任务提交后


  • Client 向 HDFS 上传 Flink 的 Jar 包和配置


  • 之后向 Yarn ResourceManager 提交任务


  • ResourceManager 分配 Container 资源并通知对应的 NodeManager 启动 ApplicationMaster


  • ApplicationMaster 启动后加载 Flink 的 Jar 包和配置构建环境


  • 然后启动 JobManager


  • 之后 ApplicationMaster 向 ResourceManager 申 请 资 源 启 动 TaskManager


  • ResourceManager 分 配 Container 资 源 后


  • 由 ApplicationMaster 通 知 资 源 所 在 节 点 的 NodeManager 启 动 TaskManager


  • NodeManager 加载 Flink 的 Jar 包和配置构建环境并启动 TaskManager


  • TaskManager 启动后向 JobManager 发送心跳包,并等待 JobManager 向其分配任务


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
3月前
|
SQL 消息中间件 分布式计算
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
91 5
|
4天前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
35 14
|
3月前
|
消息中间件 监控 Java
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
87 1
|
3月前
|
存储 SQL 分布式计算
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
28 0
|
3月前
|
存储 消息中间件 大数据
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
80 0
|
3月前
|
存储 SQL 分布式计算
大数据-125 - Flink State 02篇 状态原理和原理剖析:广播状态
大数据-125 - Flink State 02篇 状态原理和原理剖析:广播状态
55 0
|
3月前
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
210 0
|
3月前
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
131 0
|
4月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
2月前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
1376 73
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎