Flink 面试题 (持续更新)

一、Flink和Spark Streaming区别

1. 计算速度不同,flink是真正的实时计算框架,Spark Streaming是一个准实时微批次的计算框架

2. 架构不同,Spark Streaming的角色是Driver、Executor,Flink是JobManager和TaskManager

3. 时间机制不同,Spark Streaming只支持处理时间,而Flink有三种时间:事件时间、注入时间和处理时间,并且还有水位线机制处理迟到数据

二、Flink的运行依赖Hadoop组件吗

        Flink可以完全独立于Hadoop,不依赖Hadoop也可以运行。但是在实际的场景下,Flink可以和Yarn继承做资源调度,也可以读写HDFS,或者利用HDFS做checkpoint

三、Flink 集群角色有哪些?都有什么作用?

1. JobManager

        相当于集群的Master,是整个集群的协调者,负责接收job,其中有三个核心组件,Dispatcher分发器、ResourceManager资源管理器和JobMaster。

        Dispatcher:主要用来提交应用,负责为每一个新提交的作业启动一个JobMaster,也会启动一个WebUI

        ResourceManager:主要负责资源分配和管理

        JobMaster:负责处理单独的Job,JobMaster和Job是一一对应的

2. TaskManager

        实际负责执行计算的Worker,并且每个TaskManager中都有一定数量的slot(指TaskManager具有的并行执行能力)

3. client

        是Flink程序提交的客户端。当用户提交一个Flink程序时,首先会创建一个Client

四、Flink运行流程(基于Yarn)

        首先Flink作业会提交给Yarn的ResourceManager,RM会分配container,并且选择合适的NodeManager启动ApplicationMaster,也就是JobManager,然后其中的分发器会启动JobMaster,同时启动资源管理器ResourceManager。接着分发器会生成逻辑流图,然后不断地优化生成作业流图,最终生成最核心的执行流图。然后JobMaster会向ResourceManager注册并请求slot,这个ResourceManager会向Yarn的ResourceManager请求资源,接着启动NodeManger分配容器启动TaskManager,并向Flink的ResourceManager注册slot,表示自己启动成功。资源管理器会通过 通信系统Actor向TaskManager请求分配slot,TaskManager会向JobMaster提供slot。JobMaster收到资源后会根据生成的执行流图分配任务。最终task在slot中运行生成物理流图

 

五、max算子和maxby区别

这两个算子都是基于KeyedStream求最大值

max:会将原来数据的该字段替换为最大值,然后返回该记录,返回的数据不是原来的数据

maxBy:会把该字段最大的整条记录全部返回,返回的数据哈市原来的数据

六、 connect算子和union算子区别

1. union算子流的类型必须一致,connect算子可以不一致

2. union算子可以连接多条流,而connect算子只能合并两条流

七、水位线的理解

        水位线是一种特殊的时间戳,作用就是判定比这个时间早的数据已经全部到达,并且可以判定迟到数据,可以通过设置延迟时间,推迟窗口计算,从而让迟到数据也可以进入窗口。当水位线等于窗口时间的时候触发窗口计算。并且水位线是不断取最大值进行递增的

八、迟到或者乱序数据处理

1. 水位线进行设置延迟时间,通过事件时间 - 延迟时间和窗口大小进行判断

2. 设置推迟窗口关闭时间,当窗口触发计算时,不会立即关闭,直到水位线 > 窗口关闭时间+推迟时间

3. 使用侧输出流,将迟到数据输入到侧输出流,后续再做处理

九、Flink状态

1. 算子状态:和key无关,同一个任务中算子的状态是共享的

2. 键控状态:根据key来维护和访问的,keyby之后才可以使用,每个key都会保存一个状态

状态后端是用来存储状态的,分为哈希表状态后端和RocksDB状态后端

1. 哈希表状态后端

        把状态放到内存中,会在内部把状态当作对象,保存到TaskManager的JVM堆上

2. RocksDB状态后端

        会把状态序列化后存储到本地的RocksDB数据库,默认存储在TaskManager的本地数据目录中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值