关于后端:面试题百日百刷flink篇八

6次阅读

共计 1182 个字符,预计需要花费 3 分钟才能阅读完成。

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

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 最靠近代码所表白的逻辑层 a 面的计算拓扑构造,依照用户代码的执行程序向

StreamExecutionEnvironment 增加 StreamTransformation 形成流式图。

2)JobGraph 从 StreamGraph 生成,将能够串联合并的节点进行合并,设置节点之间的边,安顿资源共享 slot 槽位和搁置相关联的节点,上传工作所需的文件,设置检查点配置等。相当于通过局部初始化和优化解决的工作图。

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

全部内容在 git 上, 理解更多请点我头像或到我的主页去取得,谢谢 **

正文完
 0