flink知识总结

1. 什么是flink?

Flink 能够提供毫秒级别的延迟,同时保证了数据处理的低延迟、高吞吐和结果的正确性,还提供 了丰富的时间类型和窗口计算、Exactly-once 语义支持,另外还可以进行状态管理,并提供 了 CEP(复杂事件处理)的支持。

2. Flink 的重要特点?

事件驱动
事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。比较典型的就是以 kafka 为 代表的消息队列几乎都是事件驱动型应用。 与之不同的就是 SparkStreaming 微批次,如图:
flink知识总结
事件驱动型:
flink知识总结
流与批的世界观
批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计 算工作,一般用于离线统计。
流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统 传输的每个数据项执行操作,一般用于实时统计。

分层API
简单说越想上的API的代码越好写,越靠下的代码越多
flink知识总结

3. 什么是有界流和无界流?

在 spark 的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实 时数据是由一个一个无限的小批次组成的。

而在 flink 的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数 据是一个没有界限的流,这就是所谓的有界流和无界流。

无界数据流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并 提供数据,必须连续处理无界流,也就是说必须在获取后立即处理 event。对于无界 数据流我们无法等待所有数据都到达,因为输入是无界的,并且在任何时间点都不 会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取 event,以 便能够推断结果完整性。

有界数据流:有界数据流有明确定义的开始和结束,可以在执行任何计算之前 通过获取所有数据来处理有界流,处理有界流不需要有序获取,因为可以始终对有 界数据集进行排序,有界流的处理也称为批处理。
flink知识总结
这种以流为世界观的架构,获得的最大好处就是具有极低的延迟。

4. flink的其他特点?

flink知识总结

5. flink和sparkStreaming 对比?

flink知识总结

6. spark DAG 如何划分stage?

Spark会根据shuffle/宽依赖使用回溯算法来对DAG进行Stage划分,从后往前,遇到宽依赖就断开,遇到窄依赖就把当前的RDD加入到当前的stage/阶段中

7. flink 运行的组件?

Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作: 作业管理器(JobManager)、
资源管理器(ResourceManager)、
任务管理器(TaskManager),
以及分发器(Dispatcher)。
因为 Flink 是用 Java 和 Scala 实现的,所以所有组件都会运行在 Java 虚拟机上。

8. jobmanager 的什么作用?

控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的 JobManager 所控制执行。JobManager 会先接收到要执行的应用程序,这个应用程序会包括: 作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、库和其它 资源的 JAR 包。JobManager 会把 JobGraph 转换成一个物理层面的数据流图,这个图被叫做 “执行图”(ExecutionGraph),包含了所有可以并发执行的任务。JobManager 会向资源管 理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器(TaskManager)上 的插槽(slot)。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的 TaskManager 上。而在运行过程中,JobManager 会负责所有需要中央协调的操作,比如说检 查点(checkpoints)的协调。

9. jobmanager接收到的应用程序包含?

作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、库和其它 资源的 JAR 包。
JobManager 会把 JobGraph 转换成一个物理层面的数据流图,这个图被叫做 “执行图”(ExecutionGraph),包含了所有可以并发执行的任务。

10. taskManager 的什么作用?

Flink 中的工作进程。通常在 Flink 中会有多个 TaskManager 运行,每一个 TaskManager都包含了一定数量的插槽(slots)。插槽的数量限制了 TaskManager 能够执行的任务数量。 启动之后,TaskManager 会向资源管理器注册它的插槽;收到资源管理器的指令后, TaskManager 就会将一个或者多个插槽提供给 JobManager 调用。JobManager 就可以向插槽 分配任务(tasks)来执行了。在执行过程中,一个 TaskManager 可以跟其它运行同一应用程 序的 TaskManager 交换数据。

11. resourceManager的作用?

主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger 插槽是 Flink 中 定义的处理资源单元。Flink 为不同的环境和资源管理工具提供了不同资源管理器,比如 YARN、Mesos、K8s,以及 standalone 部署。当 JobManager 申请插槽资源时,ResourceManager 会将有空闲插槽的 TaskManager 分配给 JobManager。如果 ResourceManager 没有足够的插槽 来满足 JobManager 的请求,它还可以向资源提供平台发起会话,以提供启动 TaskManager 进程的容器。另外,ResourceManager 还负责终止空闲的 TaskManager,释放计算资源。

12. flink的资源管理器有哪些?

YARN、Mesos、K8s,以及 standalone 部署。

13. Dispatcher的作用?

他并不是必需的
flink知识总结

14. taskManager 通过什么控制task数量?

slots

15. flink 是否允许任务共享slot?

允许
flink知识总结
flink知识总结

16. flink程序包含那几部分?

source、transformation、sink
flink知识总结

17. flink 的执行图包含那四部分?

flink知识总结

18. 什么是streamgraph?

flink知识总结

19. 什么是jobgraph?

flink知识总结

20. 什么是executiongraph?

flink知识总结

21. 什么是物理执行图?

flink知识总结
总上如图所示
flink知识总结
flink知识总结

22. 什么是并行度?

flink知识总结

23. 什么是stream最大并行度?

flink知识总结

24. 算子的数据传输 2种形式?

flink知识总结
flink知识总结
flink知识总结

25. flink 的任务链?

flink知识总结

26. 满足任务链的要求?

flink知识总结
注意两点:1.相同的并行度
2.one to one