flink相关问题汇总

1.看你用了Flink,简单介绍一下Flink?


Flink是一个实时计算框架,他和spark都是流批一体计算框架,flink提供了有界流和无界流的计算,有界流其实就是flink认为数据是流式的为大多数情况,批量的为小部分情况,也就是说数据有边界叫有界流,数据没有边界叫无界流,也就是无限实时生成的数据。

flink主要对外的API有 DataSet API、DataStream API、Table API

图计算、机器学习。对外提供了有java 和scala、python两种语言接口。

2. Flink 和Spark Streaming的区别有哪些呢?
1、设计思想不同,flink认为批是流的一种,spark认为流式批的一种。

2、架构模型上的不同,spark有Driver、Master、Worker、Executor。flink有TaskManager、JobManager、Task、SubTask、Slot的这些概念

3、Flink的流式数据处理比spark要强很多,例如时间支持三种时间

窗口也比spark要多

4、在数据乱序的情况下,Flink比spark要强,因为flink有watermark,其实运行的时候的计算方法就是 最后一次数据的时间-watermaker如果大于窗口结束时间,就执行

5、对于容错来说,flink也会比spark 要强一点,例如flink支持二阶段事务可以保证程序宕机之后的数据不会重复消费问题,spark也有checkpoint但是只是保证数据不丢失,不能保证是不是重复消费。

3. Flink组件栈有哪些


1、部署模式可以有Local、Cluster、Cloud

2、然后基于Runtime组件进行所有的基础服务

3、上层提供了DataStream API 还有DataSet API

4、在高层级有Table API 、CEP复杂世家才能护理、ML机器学习、图计算

4. Flink需要依赖于Hadoop吗?
Flink可以完全独立于Hadoop,在不依赖Hadoop组件下运行,但是作为大数据的基础,可想而知,这是大部分大数据框架都绕不开的。Flink可以支持很多组件,例如Yarn的资源调度、Hbase的实时数据存储和维表存取、HDFS的状态存储和离线计算等等。

5. 你们FLink集群规模有多大?
这个就根据自己公司的情况就可以了,大部分公司都是采用的yarn模式的部署,当然yarn也有多种模式部署,例如按照单job的,或者直接在yarn申请一大块资源,来负责job的提交,大部分的公司的选择,应该都是单job模式。

6. Flink编程模型是什么?
其实就一句话,就是 Source->Transformation->Sink*

7. Flink集群有哪些角色?都有那些作用?


Flink程序在运行时主要有TaskManager、JobManager、Client三种角色。

JobManager 在集群中处于一个管理者Master的角色,它是整个集群的协调者,负责接收Flink Job的执行情况,协调checkpoint,故障恢复,管理Task Manager。

TaskManager 是负责管理器所在节点上的资源信息,如内存、磁盘、网络,在启动的时候会会将资源向JobManager进行汇报。

Client 是Flink程序提交的客户端,当用户提交一个Flink程序的时候,会首先创建一个Client。然后就会对用户提交的程序进行预处理,并且提交到集群进行处理。

8. TaskSolt是什么?


在Flink的架构中,TaskManager是实际用来执行我们的程序的工作节点,TaskManager是一个JVM进程,其实为了起到资源隔离和,并行执行的一个概念,这个时候就提出了TaskSlot的概念,其实就是为了控制TaskManager能接收多少个Task,TaskManager通过tasksolt来进行控制的,也就是假如我们有个source指定三个并行度,那么他就要用三个solt,还有一个需要主要的就是当算子并行度相同的时候,并且没有发生并行度改变,或者没有shuffle,这个时候他们会在一起,这个是一个优化的概念。

9. Flink常用的算子有那些?
Map算子
Filter算子
KeyBy算子
Window窗口
10. Flink的并行度是什么?Flink的并行度设置是怎么样的?
其实Flink的并行度很好理解,例如kafkaSource,他的并行度默认就是他的分区数量。并行度就是这个算子,需要多少的tasksolt,我们应该知道就是并行计算的优势。一般并行度是根据自己的数据量来进行设置的,source最好和map这些没有shuffle的算子一直,因为source 和map这些算子压力并不是很大,但是对于我们数据表拉宽的时候,最好可以设大一点。

11. Flink的Solt 和并行度有什么关系?
Solt是TaskManager中的概念,并行度是程序中的概念,也就是执行层面的概念,其实就是Solt是规定这个TaskManager有多少个槽,能支持多少并行度,但是程序制定的并行度使用的是槽也就是Solt,也就是说,TaskManager是提供方,程序是使用方

12. Flink假如遇到程序异常重启怎么办?
Flink有一些重启策略,并且只要做了checkpoint那么就可以做到最少一次,当然不一定可以做到精确一次,但是有些组件是可以做到的。一般设置的重启策略就是固定延迟重启策略,重启不删除checkpoint,一般我们公司设置的重启次数为4次,如果停止了,我们会发钉钉告警,启动的时候从checkpoint来进行启动。

13. Flink的分布式缓存
Flink实现的分布式缓存和Hadoop差不多。目的就是在本地读取文件,然后把它放到taskmanager节点里面,防止task重复拉取数据,降低性能。

14. Flink中的广播变量
我们知道Flink是并行的,计算过程可能不在一个 Slot 中进行,那么有一种情况即:当我们需要访问同一份数据。那么Flink中的广播变量就是为了解决这种情况。我们可以把广播变量理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。

15. Flink中的窗口有哪些你知道吗?
Flink支持两种划分窗口的方式,按照time和count。session也是一种时间

Tumbing Count Window: 当达到一定条数的时候执行计算,无折叠

Sliding Time Window: 当达到一定时间后,进行翻滚,可以有重叠,一般用来计算近期,例如近5分钟这样的需求。

Tumbing time Window: 当达到一定时间后的,进行滑动,可以联想到以前用的诺基亚的滑盖手机,这个其实就是微批

Sliding Count Window: 当达到一定数量后进行滑动

**Session Window:**窗口数据没有固定的大小,根据用户传入的参数进行划分,窗口数据无叠加。类似于当用户退出的时候,计算这个用户之前的动作。

16. Flink的状态存储?
Flink在做计算的过程中经常需要存储中间状态,来避免数据的丢失,以及异常状态恢复。选择状态存储策略不同,会影响JobManager和Subtask中的状态交互,也就是JobManager会和State进行交互,来进行状态的存储。

Flink提供了三种状态存储:

MemoryStateBackend
FsSateBackend
RocksDBStateBackend
17. Flink中的时间有哪几种?
1、事件时间:事件真实发生的时间

2、摄入时间:进入flink的时间

3、处理时间:进入flink算子的时间

18. Flink中的Watermark是什么?
Watermark是Flink用来处理乱序时间的一种操作,其实在flink中,假如我们用的是事件时间,并且采取的是kafka的source,那么这个时候的窗口执行时间就是各个分区中,最小的那个分区来进行触发的,并且每个分区都要进行触发,才会执行计算,这个是为什呢?其实是因为kafka分区间无序。分区内有序。执行时间就是最大的时间减去watermark>窗口结束时间,这个时候才会执行计算。
————————————————
版权声明:本文为CSDN博主「中国好胖子、」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43704599/article/details/108076796

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值