做网站销售的工作,手机网站建设的教程视频教程,页面设计的要求,东莞智通人才网0. 思维导图 1. 简单介绍一下Flink♥♥ Flink是一个分布式的计算框架#xff0c;主要用于对有界和无界数据流进行有状态计算#xff0c;其中有界数据流就是值离线数据#xff0c;有明确的开始和结束时间#xff0c;无界数据流就是指实时数据#xff0c;源源不断没有界限主要用于对有界和无界数据流进行有状态计算其中有界数据流就是值离线数据有明确的开始和结束时间无界数据流就是指实时数据源源不断没有界限有状态计算指的是在在进行当前数据计算的时候我们可以使用之前数据计算的结果。Flink还有一个优点就是提供了很多高级的API比如DataSet API、DataStream API、Table API和FlinkSQL。Flink的主要特点大概就是这些
2. Flink和SparkStreaming区别♥ 我觉得他们区别还是挺大的其中最大的三点如下
计算速度的不同Flink是真正的实时计算框架而sparkStreaming是一个准实时微批次的计算框架也就是说sparkSteaming的实时性比起Flink差一些。架构模型不同SparkStreaming在运行时的主要角色包括Driver、Executor而Flink在运行时主要包含JobManager、TaskManager。时间机制不同sparkStreaming只支持处理时间而Flink支持的时间语义包括处理时间、事件事件、注入时间并且还提供了watermark机制来处理迟到数据。
3. Flink的重启策略你了解吗 重启策略就是说job失败之后如何重启Flink支持不同的重启策略包括固定延迟重启策略、失败率重启策略、无重启策略。 我是在使用检查点的时候遇到过Flink重启的问题我设置了检查点但是实际上有一个地方会抛出异常但是程序始终不抛出异常并且一直输出异常之前的输出语句这个时候就是因为Flink在开启checkpoint的情况下重启策略会自动进行重启。
4. Flink的运行依赖于hadoop组件吗 Flink可以完全独立于Hadoop在不依赖Hadoop组件下运行。但是在实际的大数据应该场景下Hadoop体系是任何大数据框架都绕不过去的。Flink可以和Yarn集成做资源调度也可以读写HDFS或者利用HDFS做检查点。 emsp’ 总结一句话可以但是没必要。
5. Flink集群中有哪些角色各自有什么作用♥
slot:每一个taskmanager都包含一定数量的slot指taskmanager具有的并行执行能力静态概念 并行度taskmanager运行程序的时候实际使用的并行能力动态概念
jobmanager:相当于一个集群的Master是整个为集群的协调者负责接收job。taskmanager:负责实际执行计算的Workerclient它是Flink程序提交的客户端当用户提交一个Flink程序时会首先创建一个Client。
6. 简述Flink运行流程基于Yarn♥♥ 首先Flink的客户端将作业提交给Yarn的RM然后RM会分配container并且选择合适的NM启动ApplicationMaster然后AM启动jobmanager向RM申请资源启动taskManager然后jobManager就可以分配任务给taskManager。
7. max算子和 maxBy算子的区别♥ 这两个算子都是基于KeyedStream求最大值。不同点如下
max: 将原来的数据的该字段替换为最大值然后返回该记录返回的数据不是原来的数据。maxBy:会把该字段最大的整条记录全部返回返回的数据还是原来的数据。
8. Connect算子和Union算子的区别♥ 他们之间的主要区别如下
union算子的两个流类型必须是一样的而connect算子的两个流类型可以不一样。union算子可以连接多个流而connect算子只能连接两个流。
9. Flink的时间语义有哪几种♥♥♥
event time: 表示事件创建的时间通常由事件中的时间戳描述。ingestion time: 表示数据进入Flink的时间。processing time: 表示执行算子的本地系统时间。总结一句话在Flink的流式处理中绝大部分的业务都会使用eventTime。
10. 谈一谈你对watermark的理解♥♥♥ 只有考虑事件时间语义才会发生乱序到达窗口的事件先后顺序和事件的事件先后顺序不一致 我先说一下watermark是什么它就是一种特殊的时间戳作用就是为了让事件事件慢一点等迟到的数据都到了才触发窗口计算。我举个例子说一下为什么会出现watermark? 比如现在开了一个5s的窗口但是2s的数据在5s数据之后到来那么5s的数据来了是否要关闭窗口呢可想而知关了的话2s的数据就丢失了如果不关的话我们应该等多久呢所以需要有一个机制来保证一个特定的时间后关闭窗口这个机制就是watermark 什么是watermark呢
我的理解是watermark是一种特殊的时间戳等于直到当前事件发现的最大事件事件减去设定延迟的时间assignTimestampsWithWatermarks它的作用说简单点就是让事件时间慢一点等到迟到的数据都到了才去触发窗口计算。当watermark等于窗口时间的时候就会触发计算。
11. Flink对于迟到或者乱序数据是怎么处理的♥♥♥
watermark设置延迟时间window的allowedLateness方法可以设置窗口允许处理迟到数据的时间window的sideOutputLateData方法可以将迟到的数据写入侧输出流
12. Flink中有哪几种类型的状态你知道状态后端吗♥♥ 主要有两种类型的状态包括operator state 和keyed stateoperator state 和 key无关而keyed state和key有关。
operator state【算子状态】该类型的状态对于同一个任务而言是共享的keyed state【键控状态】每一个key都会保存一个状态 状态后端就是用来保存状态的东西状态可以理解为一个本地变量。Flink的状态在底层是如何保存的呢因此需要一个人东西来进行状态的存储、访问和维护这个东西就是状态后端。分为以下三种
MemoryStateBackend:内存级的状态后端会将状态作为内存中的对象进行管理将他们存储在TaskManager的JVM堆上。而将checkpoint存储在JobManager的内存中。FsStateBackend:将checkpoint存到远程的持久化文件系统上。而对于本地状态跟MemoryStateBackend一样也会存在TaskManager的JVM堆上。RocksDBStateBackend:将所有状态序列化后存入本地的RocksDB中存储。
13. Flink是如何做容错的 Flink实现容错主要靠强大的checkpoint机制和State机制。Checkpoint负责定时制作分布式快照、对程序中的状态进行备份State用来存储计算过程中的中间状态。
state 和 checkpoint之间的区别如下:
state存储的是某一个操作的运行状态或者历史值维护在内存中。checkpoint存储的是某一时刻所有操作的当前状态的快照存在于磁盘中。
14. Flink是如何保证Exactly-once语义的♥♥♥
at-most-once: 什么都不干既不恢复丢失的状态也不重播丢失的数据。at-least-once:一些事件可能被处理多次exactly-once:没有事件丢失并且对于每一个事件有且仅有处理一次。
整个端到端的一致性级别取决于所有组件中一致性最弱的组件 端到端的一致性包括如下
内部保证依赖checkpointsource端需要外部源可重置偏移量sink端需要保存从故障恢复时数据不会重复写入外部系统 幂等性写入同一份数据无论写入多少次只保证一份结果事务性写入 两种实现方式WAL和2PCWAL(预写日志)把结果数据先写入log文件中然后在收到checkpoint完成的通知时一次性写入sink系统。2PC(两阶段提交)对于每个checkpointsink任务会启动一个事务并将接下来所有接收的数据添加到事务里然后将这些数据写入外部sink系统但不提交他们这时只是预提交当收到checkpoint完成的通知时它才正式提交事务实现结果的真正写入。
如何确保精准一次性呢 使用checkpoint检查点其实就是所有任务的状态在某个时间点的一份快照这个时间点应该时所有任务都恰好处理完一个相同的输入数据的时候。 checkpoint的步骤 Flink应用在启动的时候Flink的jobManager创建CheckPointCoordinatorCheckpointCoodinator(检查点协调器)周期性的向该流应用的所有source算子发送barrier屏障当某个source算子收到一个barrier时便暂停数据处理过程然后将自己的当前状态制作成快照并保存到指定的持久化存储hdfs中最后向CheckpointCoordinator报告自己快照制作情况同时向自身所有下游算子广播该barrier恢复数据处理。下游算子收到barrier之后会暂停自己的数据处理过程然后将自己的相关状态制作成快照并保存到指定的持久化存储中最后向CheckpointCoordinator报告自身快照情况同时向自身所有下游算子广播该barrier恢复数据处理。每个算子按照上面这个操作不断制作快照并向下游广播直到最后barrier传递到sink算子快照制作完成。当CheckpointCoordinator收到所有算子的报告之后认为该周期的快照制作成功否则如果在规定的时间内没有收到所有算子的报告则认为本周期快照制作失败。 检查点的保存 在Flink中检查点的保存时周期性触发的间隔时间可以进行设置当所有任务都恰好处理完一个相同的输入数据的时候将它们的状态保存下来 checkpoint 和 savepoint的区别 目的 checkpoint重点时在于自动容错savepoint重点在于手动备份、恢复暂停作用触发者checkpoint是Flink自动触发而savepoint是用户主动触发状态文件保存checkpoint一般会自动删除savepoint一般都会保留下来除非用户去做相应的删除操作。
15. Flink是如何处理反压的 Flink内部是基于producer-consumer模型来进行消息传递的Flink的反压设计也是基于这个模型。Flink使用了高效有界的分布式阻塞队列就像java通用的阻塞队列BlockingQuequ一样。下游消费者消费变慢上游就会收到阻塞。
16. Flink是如何支持批流一体的♥ Flink使用一个引擎就支持了DataSetAPI和DataStream API。其中DataSet API 用来处理有界流DataStream API 既可以处理有界流又可以处理无界流这样就实现了流批一体。
17. 你用过Flink CEP吗简单介绍一下♥
说一下我的理解CEP就是用来从无界流中得到满足一定规则的复杂事件。我之前在做用户行为分析的时候做过一个需求如果有用户5s内连续登录3次就报警输出该用户 使用CEP编程特别简单首先定义一个匹配模式begin where next where within调用Pattern中的方法然后将匹配模式应用到数据流上调用CEP.pattern方法最后检测出符合匹配条件的复杂事件进行转换处理输出报警信息。