面试题百日百刷-flink篇(八)

 锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题:

1.Operator Chains(算子链)这个概念你了解吗?

为了更高效地分布式执行,Flink会尽可能地将operator的subtask链接(chain)在一起形成task。每个task在一个线程中执行。将operators链接成task是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。这就是我们所说的算子链。

2.Flink什么情况下才会把Operator chain在一起形成算子链?

两个operator chain在一起的的条件:

上下游的并行度一致

下游节点的入度为1 (也就是说下游节点没有来自其他节点的输入)

上下游节点都在同一个 slot group 中(下面会解释 slot group)

下游节点的 chain 策略为 ALWAYS(可以与上下游链接,map、flatmap、filter等默认是ALWAYS)

上游节点的 chain 策略为 ALWAYS 或 HEAD(只能与下游链接,不能与上游链接,Source默认是HEAD)

两个节点间数据分区方式是 forward(参考理解数据流的分区)

用户没有禁用 chain

3.flink中消费kafka数据的时候,如何处理脏数据?

可以在处理前加一个fliter算子,将不符合规则的数据过滤出去。

4.Flink Job的提交流程

用户提交的Flink Job会被转化成一个DAG任务运行,分别是:StreamGraph、JobGraph、ExecutionGraph,Flink中JobManager与TaskManager,JobManager与Client的交互是基于Akka工具包的,是通过消息驱动。整个Flink Job的提交还包含着ActorSystem的创建,JobManager的启动,TaskManager的启动和注册。

5.Flink所谓"三层图"结构是哪几个"图"?

一个Flink任务的DAG生成计算图大致经历以下三个过程:

1)StreamGraph 最接近代码所表达的逻辑层面的计算拓扑结构,按照用户代码的执行顺序向

StreamExecutionEnvironment添加StreamTransformation构成流式图。

2)JobGraph 从StreamGraph生成,将可以串联合并的节点进行合并,设置节点之间的边,安排资源共享slot槽位和放置相关联的节点,上传任务所需的文件,设置检查点配置等。相当于经过部分初始化和优化处理的任务图。

3)ExecutionGraph 由JobGraph转换而来,包含了任务具体执行所需的内容,是最贴近底层实现的执行图。

全部内容在[git](https://gitee.com/zjlalaforgit/interview)上,了解更多请点我头像或到我的主页去获得,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一些 Flink 面试题及其答案,供您参考: 1. 什么是 FlinkFlink 是一个开源的流处理框架,它提供了高性能、稳定可靠、易于使用的流处理引擎,支持在大规模数据处理时进行实时计算和批处理。 2. Flink 的核心原理是什么? Flink 的核心原理是基于流式数据流处理,它将数据流分成若干个事件流,每个事件流都有自己的处理逻辑,最后将处理后的结果合并成最终结果。 3. Flink 的窗口有哪些类型? Flink 的窗口有以下几种类型: - 时间窗口:按照时间间隔划分数据流。 - 计数窗口:按照数据条数划分数据流。 - 滑动窗口:在时间窗口或计数窗口的基础上增加了一个滑动的步长。 - 会话窗口:按照会话时间间隔划分数据流。 4. Flink 支持哪些语言? Flink 支持 Java 和 Scala 两种语言。 5. Flink 和 Spark Streaming 有什么区别? Flink 和 Spark Streaming 都是实时计算框架,但是它们有以下几个区别: - Flink 更加注重实时计算的性能和稳定性,支持更低的延迟和更高的吞吐量。 - Flink 支持按照事件时间进行窗口计算,而 Spark Streaming 只支持按照处理时间进行计算。 - Flink 支持状态后端的切换,而 Spark Streaming 只支持基于内存的状态存储。 - Flink 支持更多的数据源和 Sink,例如 Apache Kafka、RabbitMQ、Elasticsearch 等,而 Spark Streaming 只支持少量的数据源和 Sink。 6. Flink 的高可用机制是怎样的? Flink 的高可用机制主要包括以下几个方面: - Master 选举:Flink 的 JobManager 采用了 ZooKeeper 进行主从节点的选举,保证当主节点失败时可以快速切换到备用节点。 - 容错机制:Flink 采用了 checkpoint 机制,将流式计算的中间状态保存在分布式文件系统上,当程序出现故障时可以快速恢复。 - 多重副本:Flink 采用了多重副本机制,将数据在多个节点上保存多份,避免因为节点故障导致数据丢失。 7. Flink 的数据流转过程是怎样的? Flink 的数据流转过程包括以下几个阶段: - 数据源:从数据源读取数据。 - 数据转换:对数据进行处理、过滤、聚合等操作。 - 窗口计算:按照窗口对数据进行分组和计算。 - 数据 Sink:将计算结果写入外部存储系统。 8. Flink 的优势是什么? Flink 的优势主要包括以下几个方面: - 支持流式计算和批处理,可以处理大规模的数据流和数据集。 - 支持事件时间窗口计算,保证了计算的准确性。 - 支持多重数据源和 Sink,可以与多种存储系统集成。 - 支持高可用和容错机制,保证计算的稳定性和可靠性。 - 支持灵活的编程模型和 API,易于使用和扩展。 - 支持低延迟和高吞吐量的实时计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值