大数据高级阶段面试题(实时2)

14.Flink状态管理内部原理是什么?

状态后端:

Flink支持多种状态后端,包括内存,文件系统和分布式存储系统,状态后端负责将数据保存到相应的存储系统中,RocksDB是Flink默认的状态后端,它提供了高性能的本地存储,并能有有效地处理大规模的状态数据。

状态检查点:

Flink通过周期性地生成检查点来实现容错机制,检查点包含了某个时间点的所有状态数据,并将这些数据保存到持久化存储中,当作业发生故障的时候,Flink可以从最近的检查点恢复状态,并继续处理数据流,为了保证一致性,Flink会使用分布式快照算法来确保在生成检查点时不影响作业的正常运行。

15.Flink任务链和任务槽的作⽤是什么?

任务链式将一系列操作符链接在一起形成一个连续的执行链,这样可以减少数据的序列化和反序列化开销,提高作业的执行效率,任务链中操作符会在同一个线程中执行,并且数据可以直接在内存中传递,而不需要经过网路传输和磁盘IO;

任务槽是Flink中用于分配资源和执行任务的单位,每个TaskManager在启动时会预先分配一定数量的任务槽,作业会根据配置的并行度和资源需求来占用这些任务槽。

16.FlinkSQL和TableAPI的区别是什么?

FlinkSql使用类似Sql的语言来编写查询和转换操作,学习起来相对容易一些

TableApi提供了基于流式查询的编程接口,通过链式调用操作符来构建数据处理流程,更加灵活和可控

FlinkSql内置了优化器和执行引擎,能够自动优化查询计划并选择最优的执行策略,提高查询性能和执行效率

TableApi提供了更多的灵活性和扩展性,开发者可以通过自定义函数满足更复杂的数据处理需求。

17.FlinkStreaming如何处理迟到事件?

18.Flink中数据倾斜原因和解决⽅案

原因:

:数据分布不均匀:数据源中的数据分布均匀,导致某些任务处理的数据量远远大于其他任务

:使用了聚合操作:在进行聚合操作时,如果某些键的数据量过大,可能导致特定任务负载过重,造成数据倾斜

解决方案:

①:重分区:通过重新分区将数据均匀的分不到不同的任务中,实现负载均衡。

②:增加并行度:增加作业的并行度,使得数据能够被更多的任务并行处理,从而减少单个任务的负载压力

③:使用合适的窗口策略:在窗口操作中,选择合适的窗口大小和滑动间隔,避免某些窗口的数据量过大。

19.Flink与SparkStreaming的技术选型对⽐

Flink和SparkStreaming是两个流式计算框架,都可以用于实时数据的处理和分析

①:Flink使用事件驱动的流处理模型,可以对无界流和有界流进行处理,它提供了低延迟,一次语义保证以及状态管理等功能。

SparkStreaming基于微批处理模型,将连续的数据流划分为一系列小的批次进行处理,提供了较高的吞吐量和容错性

②:Flink具有自动容错机制,当节点发生故障时,它能够自动恢复并保证数据处理的准确性和一致性

SparkStreaming的容错性依赖于Spark的批处理引擎,需要手动设置检查点机制来实现容错。

③:Flink提供了流处理操作符和窗口函数,同时还支持CEP等高级功能

SparkStreaming相对简化,提供了基本的流处理操作符和窗口函数

20.FlinkSavepoint和Checkpoint的区别

Checkpoint和Savepoint是Flink中用于容错的两个概念

Checkpoint:

①Checkpoint会定期将作业的状态保存到持久化存储中,便于在发生故障时可以恢复到最近一次的Chhekpoint的位置。

②Checkpoint是由Flink系统自动触发和管理的,可以在作业执行的过程中多次被执行,以确保状态的一致性和完整性。

③Checkpoint的主要目的是保证数据的一致性和处理的正确性,通常与状态后端一起使用,将状态保存到分布式文件系统或数据库中。

Savepoint:

Savepoint是Checkpoint的一种特殊形式,它是一种手动触发的Checkpoint,Savepoint的生成个不依赖于时间间隔或者数据量大小,而是由用户自己触发生成的

总结:

Checkpoint是自动触发的,用于故障恢复和容错保障

Savapoint是手动触发的,用于应用程序的部署,升级和回滚

21.Flink状态⼀致性和容错机制

容错机制的核心就是检查点,它是对状态的定期快照,用于保存数据流处理的中间结果,当发生故障的时候可以根据最近的检查点进行状态的恢复来确保数据的一致性和结算结果的正确性

容错语义:

精确一次:每条记录都只会被处理一次,不会重复处理也不会丢失数据

至少一次:每条数据至少会被处理一次,但是数据可能会重复

最多一次:每条记录最多被处理一次,但可能会出现数据丢失的情况

22.Flink批流统⼀的意义及实现

Flink实现流批统一的主要方式是通过DataStreamAPI和DataSetAPI实现的

DataStreamAPI用于处理实时流数据,支持连续的数据流处理

DataStreamAPI,开发人员可以定义数据流的转换,过滤,聚合等操作,并实时的处理流数据

DataSetAPI用于处理批数据,支持静态的数据集处理

使用DataSetAPI,开发人员可以对静态的数据集进行各种转换,过滤聚合等操作。

23.FlinkCEP复杂事件处理应⽤

CEP就是复杂事件处理,就是可以在事件流里面检测到特定的事件组合并进行处理,具体的处理过程是:把事件流中的一个个简单事件,通过一定的规则匹配组合起来,然后对满足这些规则的一组组复杂事件进行转换处理。

CEP的流程分为三个步骤:

①:定义一个匹配规则

②:将匹配规则应用到事件流上,检测满足规则的复杂事件

③:对检测的复杂事件进行处理,得到结果进行输出

24.FlinkWatermark机制

Flink的Watermark机制是一种用于处理事件时间的机制,用于解决流处理中的乱序数据和延迟数据的问题,确保数据处理的准确性和完整性

Watermark可以通过两种方式生成周期性生成和间断性生成

①周期性生成:这种方式是指在固定的时间间隔内生成Watermark

②间断性生成:这种方式是指在数据流中的某些特定位置生成Watermark

有序数据和无序数据

有序数据:

理想状态下,数据应该按照他们生成的先后顺序排队进入流中,遵守先来后到的原则,这样我们就可以从每个数据中提取时间戳,从而插入的水位线也会不断增长,事件始终不断向前推进。

无序数据:

有序流的处理非常简单,但这种情况只存在于理想状态下,我们知道在分布式系统中,数据在节点中传输,会因为网络传输延迟的不确定性,导致数据的先后顺序不一致,例如:一个七秒产生的数据,生成时间肯定比九秒数据早,但是经过传输之后看了能比九秒的数据后到达,这时我们就要用到水位线

25.Flink窗⼝函数的应⽤

滑动窗口:

滑动窗口在固定大小的窗口上定义了一个滑动步长,窗口之间可以有重叠部分,常用于连续的数据流分析

滚动窗口:

滚动窗口将数据按照固定的大小进行划分,窗口之前没有重叠,常用于对实时数据进行周期性的统计分析,如每分钟,每小时。

会话窗口:

会话窗口是根据数据的活动间隔动态定义的窗口,当数据流中出现一段时间内没有数据到达的间隔时,会话窗口结束,会话窗口需要制定两个参数,会话超时时间和间隔时间,当某个数据到达时,会话窗口会检查该数据与前一个数据的时间间隔,如果超过了会话超时时间,则结束前一个会话窗口并开始一个新的会话窗口

26.Kafka和Flink内存参数配置的关系和优化⽅法

优化方法:

监控和调优

定期监控Kafka和Flink集群的内存使用情况,根据实际情况调整相应的内存参数,避免因为内存不足导致的性能问题

合理分配资源

根据集群的规模,负载情况和任务的需求,合理分配和管理内存的资源,确保每个组件都能够得到足够的资源支持

使用压缩

在Kafka和Flink都可以使用压缩技术来减少数据传输和存储的开销,从而节省和网络带宽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/599544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ATA-2161高压放大器用途有哪些种类

高压放大器是一种电子设备,其主要功能是将输入信号放大到较高的电压水平,同时保持信号的形状和特性。这种设备在各种应用领域中都有重要作用,它的种类繁多,根据不同的用途可以分为多种类型。 1.医学领域 在医学设备中,…

搭建Harbor仓库

文章目录 Harbor仓库搭建Harbor仓库安装 docker 服务修改配置文件 Harbor仓库 搭建Harbor仓库 下载 Harbor 仓库 安装 docker 服务 # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 yum-config-m…

notepad++安装 hex-editor插件

打开notepad 点击插件 搜索 hex-editor,点击右侧 安装install 安装成功后,在已安装插件中就有显示了

Java性能优化(五)-多线程调优-Lock同步锁的优化

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

《QT实用小工具·五十九》随机图形验证码,带有一些可人的交互与动画

1、概述 源码放在文章末尾 该项目实现了可交互的动画验证码控件,趣味性十足: 字符变换动画 噪音动画 可拖动交互 项目demo演示如下所示: 项目部分代码如下所示: #ifndef CAPTCHAMOVABLELABEL_H #define CAPTCHAMOVABLELABEL…

【影片欣赏】【指环王】【魔戒:护戒使者 The Lord of the Rings: The Fellowship of the Ring】

2001年发行,Extended DVD Edition Part One 1. Prologue: One Ring to Rule Them All… 2. Concerning Hobbits 3. The Shire 4. Very Old Friends 5. A Long-expected Party 6. Farewell Dear Bilbo 7. Keep It Secret, Keep It Safe 8. The Account of Isildur 9…

MyBatis入门例子

1、建立与数据库对应的POJO类 2、建立mybatis的配置文件 修改后如下: 3、创建POJO对象和Mysql数据的表之间的映射配置 4、建一个测试方法 实现从数据库中取数一条数据,封装成User对象返回 注意点: 这点,大家应该不陌生了&#x…

28-代码随想录18四数之和

18. 四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#xff…

小米手机miui14 android chrome如何取消网页自动打开app

搜索媒体打开应用 选择你要阻止打开的app,以github为例 取消勾选打开支持的链接。 参考:https://www.reddit.com/r/chrome/s/JBsGkZDkRZ

【进程终止】退出信号 | 三种退出情况 | 如何进程终止returnexit_exit

目录 退出码 退出信号 进程终止情况3 如何进程终止 return退出 库函数exit 系统调用函数_exit ​exit和_exit的区别缓冲区 exit _exit 退出码 回顾上篇 代码跑完,结果正确(退出码为0)代码跑完,结果不正确(退…

批量将GOID转成GO term名并添加BP,MF,CC分类信息

基因本体论(Gene Ontology,GO,https://www.geneontology.org)是一个广泛应用于生物信息学领域的知识库,它提供了一套标准化的词汇和分类体系,用于描述基因功能、细胞组分和生物过程。GO旨在统一科研人员对基…

C/C++ BM30 二叉搜索树与双向链表

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题要明白二叉搜索树的概念,同时还要对链表的知识比较熟悉。 题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范…

在QEMU上运行OpenSBI+Linux+Rootfs

在QEMU上运行OpenSBILinuxRootfs 1 编译QEMU2 安装交叉编译工具3 编译OpenSBI4 编译Linux5 创建根文件系统5.1 编译busybox5.2 创建目录结构5.3 制作文件系统镜像5.3.1 创建 ext2 文件5.3.2 将目录结构拷贝进 ext2 文件5.3.3 取消挂载 6 运行OpenSBILinuxRootfs 本文所使用的版…

PVZ2 植物克僵尸【第二期】

众所周知,PVZ2(植物大战僵尸2)中有许多恶心的僵尸,而我们不得不派出它们的————克星!(*为建议方法) 5.战机小鬼 战机小鬼,恶心会发射子弹,所以: 1&…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

【解决】:git clone项目报错fatal: fetch-pack: invalid index-pack output

象&#xff1a;之前一直使用gitee将个人学习和工作相关记录上传到个人gitee仓库&#xff0c;一直没出现过问题。直到有一天换电脑重新拉取代码发现出了问题&#xff0c;具体如下图&#xff1a; 原因分析&#xff1a; 经过查询发现主要原因是因为git clone的远程仓库的项目过大…

【强化学习】公平性Actor-Critic算法

Bringing Fairness to Actor-Critic Reinforcement Learning for Network Utility Optimization 阅读笔记 Problem FormulationLearning AlgorithmLearning with Multiplicative-Adjusted RewardsSolving Fairness Utility Optimization Evaluations 在网络优化问题中&#xff…

懒人网址导航源码v3.9源码及教程

懒人网址导航源码v3.9源码及教程 效果图使用方法部分源码领取源码下期更新预报 效果图 使用方法 测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44为防止调试错误&#xff0c;建议使用测试环境运行的php与mysql版本首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不…

QT-TCP通信

网上的资料太过于书面化&#xff0c;所以看起来有的让人云里雾里&#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系 所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端&#xff1a; MainWindow::MainWindow(QWidget *parent) …

Kubernetes 教程:在 Containerd 容器中使用 GPU

原文链接:Kubernetes 教程:在 Containerd 容器中使用 GPU 云原生实验室本文介绍了如何在使用 Containerd 作为运行时的 Kubernetes 集群中使用 GPU 资源。https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道…
最新文章