大数据Flink面试考题___Flink高频考点,万字超全整理(建议)_flink选择题

9.fink的高可用模式,主要是防止 JobManager出现单点故障,确保集群的高可用。()

10 Hlink SoL底层 Runtime本身是一个流与批的统一的引擘, HlinkSQL可以做到AP层的流与
批统一。()

下面为模拟面试,假如面试官考你Flink相关,你该如何回答呢?

在这里插入图片描述

1.简单介绍一下 Flink

Flink 核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数 据通信以及容错机制等功能。 基于流执行引擎,Flink 提供了诸多更高抽象层的 API 以便用户编 写分布式任务:DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集, 用户可以方便地使用 Flink 提供的各种操作符对分布式数据集进行处理,支持 Java、Scala 和 Python。DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用 户可以方便地对分布式数据流进行各种操作,支持 Java 和 Scala。Table API,对结构化数据进 行查询操作,将结构化数据抽象成关系表,并通过类 SQL 的 DSL 对关系表进行各种查询操作,支 持 Java 和 Scala。此外,Flink 还针对特定的应用领域提供了领域库,例如:Flink ML,Flink 的机器学习库,提供了机器学习 Pipelines API 并实现了多种机器学习算法。Gelly,Flink 的图 计算库,提供了图计算的相关 API 及多种图计算算法实现。

2.Flink 相比 Spark Streaming 有什么区别?

架构模型上:Spark Streaming 的 task 运行依赖 driver 和 executor 和 worker,当然 driver 和 excutor 还依赖于集群管理器 Standalone 或者 yarn 等。而 Flink 运行时主要是 JobManager、 TaskManage 和 TaskSlot。另外一个最核心的区别是:Spark Streaming 是微批处理,运行的时 候需要指定批处理的时间,每次运行 job 时处理一个批次的数据;Flink 是基于事件驱动的, 事件可以理解为消息。事件驱动的应用程序是一种状态应用程序,它会从一个或者多个流中注入 事件,通过触发计算更新状态,或外部动作对注入的事件作出反应。
任务调度上:Spark Streaming 的调度分为构建 DGA 图,划分 stage,生成 taskset,调度 task 等步骤,而 Flink 首先会生成 StreamGraph,接着生成 JobGraph,然后将 jobGraph 提交 给 Jobmanager 由它完成 jobGraph 到 ExecutionGraph 的转变,最后由 jobManager 调度执行。
时间机制上:flink 支持三种时间机制事件时间,注入时间,处理时间,同时支持 watermark 机制处理滞后数据。Spark Streaming 只支持处理时间,Structured streaming 则支持了事件时 间和 watermark 机制。
容错机制上:二者保证 exactly-once 的方式不同。spark streaming 通过保存 offset 和事 务的方式;Flink 则使用两阶段提交协议来解决这个问题。

3 Flink 中的分区策略有哪几种?

分区策略是用来决定数据如何发送至下游。目前 Flink 支持了8中分区策略的实现。

1)GlobalPartitioner 数据会被分发到下游算子的第一个实例中进行处理。

2)ShufflePartitioner 数据会被随机分发到下游算子的每一个实例中进行处理。

3)RebalancePartitioner 数据会被循环发送到下游的每一个实例中进行处理。

4)RescalePartitioner 这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。这里有点难以理解,假设上游并行度为2,编号为A和B。下游并行度为4,编号为1,2,3,4。那么A则把数据循环发送给1和2,B则把数据循环发送给3和4。假设上游并行度为4,编号为A,B,C,D。下游并行度为2,编号为1,2。那么A和B则把数据发送给1,C和D则把数据发送给2。

5)BroadcastPartitioner 广播分区会将上游数据输出到下游算子的每个实例中。适合于大数据集和小数据集做Jion的场景。

6)ForwardPartitioner ForwardPartitioner 用于将记录输出到下游本地的算子实例。它要求上下游算子并行度一样。简单的说,ForwardPartitioner用来做数据的控制台打印。

7)KeyGroupStreamPartitioner Hash分区器。会将数据按 Key 的 Hash 值输出到下游算子实例中。

8)CustomPartitionerWrapper 用户自定义分区器。需要用户自己实现Partitioner接口,来定义自己的分区逻辑

4 Flink 的并行度有了解吗?Flink 中设置并行度需要注意什么?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值