Flink原理简介和使用(1)

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

image.png


客户端不是运行时和程序执行的一部分 
但它用于准备并发送dataflow(JobGraph)给Master(JobManager)
然后客户端断开连接或维持连接以等待接受计算结果
当Flink集群启动后 首先会启动一个JobManager和一个或多个TaskManager去执行
然后TaskManager将心跳和统计信息汇报给JobManager
TaskManager之间以流的形式进行数据传输 
以上三者均为独立的JVM进程


  • Client


提交Job的客户端
可以是运行在任何机器上 (与JobManager环境连通即可)
提交Job后 Clinet可以结束进程(Streaming的任务)
也可以不结束并等待结果返回


  • JobManager


主要负责调度Job并协调Task做checkpoint 
职责很像Storm的Nimbus
从Clinet处接受Job和Jar包等资源后 会生成优化后的执行计划
并以Task的单元调度到各个TaskManager去执行


  • TaskManager


TaskManager启动的时候就设置好了槽位数(Slot) 
每个Slot能启动一个Task 。Task为线程
从JobManager处接受需要部署的Task 
部署启动后 与自己上游建立Netty连接 接受数据并处理


TaskManager与Slots


image.png


  • Flink中的每一个worker(TaskManager)都是一个JVM进程


它可能会在独立的线程上执行一个或多个subtask


  • 控制一个worker能接受多少个task ,worker通过task slot来进行控制


一个worker至少有一个task slot


  • 每个task slot表示TaskManager拥有资源的一个固定大小的子集


假如一个TaksManager有三个slot 那么它会将其管理的内存分成三份分给三个slot


  • 资源slot化意味着一个subtask将不需要跟来自其他job的subtask竞争被管理的内存 取而代之的是它将拥有一定数量的内存储备


需要注意的是 这里不会涉及到CPU的隔离 slot目前仅仅用来隔离task受管理的内存


  • 通过调整task slot的数量 允许用户定义subtask之间如何互相隔离


如果一个taskManager一个slot 那将意味着每个task group运行在独立的JVM中 (该JVM可能通过一个特定的容器启动的)
而一个TaskManager多个slot意味着更多的subtask可以共享同一个JVM
而同一个JVM进程中的task将共享TCP连接(基于多路复用)和心跳消息
它们也可能共享数据集和数据结构 因此这减少了每个task的负载


子任务共享slot


image.png


  • 默认情况下 Flink允许子任务共享slot


即使它们是不同任务的子任务(前提是它们来自同一个job)
这样的结果是 一个slot可以保存业务的整个管道


  • Task slot是静态概念 是指TaskManager具有并发执行能力


可以通过taskmanager.numberOfTaskSlots进行配置


  • 并行度 parallelism是动态概念 即每个TaskManager运行程序时实际使用的并发能力


可以通过参数 parallelism.default进行配置


假设一共有3个TaskManager 每个TaskManager中分配3个TaskSlot
也就是说每个TaskManager可以接收3个task
一共9个TaskSlot 如果设置parralelism.default=1即运行程序默认的并行度为1
9个TaskSlot只用了一个 有8个空闲
因此需要设置合适的并行度才能提高效率


image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
|
4月前
|
消息中间件 缓存 监控
Flink背压原理以及解决优化
Flink背压原理以及解决优化
132 0
|
1天前
|
存储 NoSQL 分布式数据库
【Flink】Flink分布式快照的原理是什么?
【4月更文挑战第21天】【Flink】Flink分布式快照的原理是什么?
|
10天前
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
27 4
面经:Storm实时计算框架原理与应用场景
|
12天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
34 0
|
1月前
|
SQL 缓存 分布式计算
flink1.18 SqlGateway 的使用和原理分析
# 了解flink1.18 sqlGateway 的安装和使用步骤 # 启动sqlgateway 流程,了解核心的结构 # sql提交流程,了解sql 的流转逻辑 # select 查询的ResultSet的对接流程,了解数据的返回和获取逻辑
|
1月前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
60 1
|
2月前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
496 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
|
3月前
|
存储 NoSQL MongoDB
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
本文整理自阿里云 Flink 团队归源老师关于阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference 的研究。
46940 2
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
|
3月前
|
Java 数据处理 分布式数据库
Flink中的Exactly-Once语义是什么?请解释其作用和实现原理。
Flink中的Exactly-Once语义是什么?请解释其作用和实现原理。
25 0