![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Flink
文章平均质量分 69
zjlala96
努力学习,终生学习
展开
-
面试题百日百刷-flink篇(十一)
在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是watermark的处理逻辑。CEP对未匹配成功的事件序列的处理,和迟到数据是类似的。在 Flink CEP的处理逻辑中,状态没有满足的和迟到的数据,都会存储在一个Map数据结构中,也就是说,如果我们限定判断事件序列的时长为5分钟,那么内存中就会存储5分钟的数据,这在我看来,也是对内存的极大损伤之一。一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据 —— 满足规则的复杂事件。转载 2023-05-05 09:00:00 · 52 阅读 · 0 评论 -
面试题百日百刷-flink篇(十)
在MemorySegment这个抽象之上,Flink在数据从operator内的数据对象在向TaskManager上转移,预备被发给下个节点的过程中,使用的抽象或者说内存对象是Buffer。而在同一个JVM进程中的task,可以共享TCP连接(基于多路复用)和心跳消息,可以减少数据的网络传输,也能共享一些数据结构,一定程度上减少了每个task的消耗。TaskManager中最细粒度的资源是Task slot,代表了一个固定大小的资源子集,每个TaskManager会将其所占有的资源平分给它的slot。转载 2023-05-04 09:00:00 · 47 阅读 · 0 评论 -
面试题百日百刷-flink篇(九)
JobManager 负责整个 Flink 集群任务的调度以及资源的管理,从客户端中获取提交的应用,然后根据集群中TaskManager 上 TaskSlot 的使用情况,为提交的应用分配相应的 TaskSlot 资源并命令 TaskManager 启动从客户端中获取的应用。JobManager 相当于整个集群的 Master 节点,且整个集群有且只有一个活跃的JobManager ,负责整个集群的任务管理和资源管理。同时 TaskManager 之间的数据交互都是通过数据流的方式进行的。转载 2023-05-03 09:00:00 · 59 阅读 · 0 评论 -
面试题百日百刷-flink篇(八)
整个Flink Job的提交还包含着ActorSystem的创建,JobManager的启动,TaskManager的启动和注册。将operators链接成task是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。这就是我们所说的算子链。2)JobGraph 从StreamGraph生成,将可以串联合并的节点进行合并,设置节点之间的边,安排资源共享slot槽位和放置相关联的节点,上传任务所需的文件,设置检查点配置等。转载 2023-05-02 09:00:00 · 43 阅读 · 0 评论 -
面试题百日百刷-flink篇(七)
Storm 是通过监控 Bolt 中的接收队列负载情况,如果超过高水位值就会将反压信息写到 Zookeeper ,Zookeeper 上的 watch 会通知该拓扑的所有 Worker 都进入反压状态,最后 Spout 停止发送 tuple。作业参数调优包括:并行度的设置,State的设置,checkpoint的设置。原理是缓存一定的数据后再触发处理,以减少对State的访问,从而提升吞吐和减少数据的输出量。这时候我们在进行聚合的时候,北京和上海就会出现数据堆积,我们可以单独数据北京和上海的数据。转载 2023-05-01 09:00:00 · 48 阅读 · 0 评论 -
面试题百日百刷-flink篇(六)
Apache Flink摒弃了Java原生的序列化方法,以独特的方式处理数据类型和序列化,包含自己的类型描述符,泛型类型提取和类型序列化框架。Flink 并不是将大量对象存在堆上,而是将对象都序列化到一个预分配的内存块上。Flink源码中有一个独立的connector模块,所有的其他connector都依赖于此模块,Flink 在1.9版本发布的全新kafka连接器,摒弃了之前连接不同版本的kafka集群需要依赖不同版本的connector这种做法,只需要依赖一个connector即可。转载 2023-04-30 09:00:00 · 51 阅读 · 0 评论 -
面试题百日百刷-flink篇(五)
在一个Flink Job中,数据需要在不同的task中进行交换,整个数据交换是有 TaskManager 负责的,TaskManager 的网络组件首先从缓冲buffer中收集records,然后再发送。Records 并不是一个一个被发送的,而是积累一个批次再发送,batch 技术可以更加高效的利用网络资源。本道面试题考察的其实就是一句话:Flink的开发者认为批处理是流处理的一种特殊情况。可以根据状态来提交预提交的数据,也可删除预提交的数据。正式提交(commit)将之前写完的临时文件放入目标目录下。转载 2023-04-29 09:00:00 · 59 阅读 · 0 评论 -
面试题百日百刷-flink篇(四)
flink支持窗口的两个重要属性(size和interval)如果size=interval,那么就会形成tumbling-window(无重叠数据) 如果size>interval,那么就会形成sliding-window(有重。time-sliding-window 有重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5), Time.seconds(3))Flink 中的时间和其他流式计算系统的时间一样分为三类:事件时间,摄入时间,处理时间三种。转载 2023-04-28 09:00:00 · 64 阅读 · 0 评论 -
面试题百日百刷-flink篇(三)
在Flink架构角色中我们提到,TaskManager是实际负责执行计算的Worker,TaskManager 是一个 JVM 进程,并会以独立的线程来执行一个task或多个subtask。简单的说,TaskManager会将自己节点上管理的资源分为不同的Slot:固定大小的资源子集。Flink 最常用的常用算子包括:Map:DataStream → DataStream,输入一个参数产生一个参数,map的功能是对输入的参数进行转换操作。需要注意的优先级:算子层面>环境层面>客户端层面>系统层面。转载 2023-04-27 09:00:00 · 148 阅读 · 0 评论 -
面试题百日百刷-flink篇(二)
Client是Flink程序提交的客户端,当用户提交一个Flink程序时,会首先创建一个Client,该Client首先会对用户提交的Flink程序进行预处理,并提交到Flink集群中处理,所以Client需要从用户提交的Flink程序配置中获取JobManager的地址,并建立到JobManager的连接,将Flink Job提交给JobManager。数据流(stream)就是一组永远不会停止的数据记录流,而转换(transformation)是将一个或多个流作为输入,并生成一个或多个输出流的操作。转载 2023-04-21 09:00:00 · 48 阅读 · 0 评论 -
面试题百日百刷-flink篇(一)
API层:API 层主要实现了面向流(Stream)处理和批(Batch)处理API,其中面向流处理对应DataStream API,面向批处理对应DataSet API,后续版本,Flink有计划将DataStream和DataSet API进行统一。Libraries层:该层称为Flink应用框架层,根据API层的划分,在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理和面向批处理两类。Flink 支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。转载 2023-04-20 09:00:00 · 47 阅读 · 0 评论