锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的, 接下来的是今日的面试题:
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上,了解更多请点我头像或到我的主页去获得,谢谢**
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net