赞
踩
一、什么是Flink
Flink 是为分布式、高性能、随时可用以及准确 的流处理应用程序打造的开源流处理框架。
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有 状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模 来执行计算。
二、为什么选择Flink
1、流数据更真实地反映了我们的生活方式
2、低延迟 ➢ 高吞吐 ➢ 结果的准确性和良好的容错性
3、支持事件时间(event-time)和处理时间(processing-time) 语义
4、精确一次(exactly-once)的状态一致性保证
5、与众多常用存储系统的连接
三、Flink的主要特点
1、事件驱动
事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并 根据到来的事件触发计算、状态更新或其他外部动作。比较典型的就是以 kafka 为 代表的消息队列几乎都是事件驱动型应用。
2、基于流的世界观
在 Flink 的世界观中,一切都是由流组成的,离线数据是有界的 流;实时数据是一个没有界限的流:这就是所谓的有界流和无界 流
3、分层API
越顶层越抽象,表达含义越简明,使用越方便
越底层越具体,表达能力越丰富,使用越灵活
四、Flink 运行架构 运行时组件
1、作业管理器(JobManager)
(1)、 控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的 JobManager 所控制执行。
(2)、JobManager 会先接收到要执行的应用程序,这个应用程序会包括:作业图 (JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、 库和其它资源的JAR包。
(3)、 JobManager 会把JobGraph转换成一个物理层面的数据流图,这个图被叫做 “执行图”(ExecutionGraph),包含了所有可以并发执行的任务。
(4)、JobManager 会向资源管理器(ResourceManager)请求执行任务必要的资源, 也就是任务管理器(TaskManager)上的插槽(slot)。一旦它获取到了足够的 资源,就会将执行图分发到真正运行它们的TaskManager上。而在运行过程中, JobManager会负责所有需要中央协调的操作,比如说检查点(checkpoints) 的协调。
2、任务管理器(TaskManager)
(1)、Flink中的工作进程。通常在Flink中会有多个TaskManager运行,每一 个TaskManager都包含了一定数量的插槽(slots)。插槽的数量限制 了TaskManager能够执行的任务数量。
(2)、启动之后,TaskManager会向资源管理器注册它的插槽;收到资源管理 器的指令后,TaskManager就会将一个或者多个插槽提供给 JobManager调用。JobManager就可以向插槽分配任务(tasks)来 执行了。
(3)、在执行过程中,一个TaskManager可以跟其它运行同一应用程序的 TaskManager交换数据。
3、资源管理器(ResourceManager)
(1)、主要负责管理任务管理器(TaskManager)的插槽(slot), TaskManger 插槽是Flink中定义的处理资源单元。
(2)、Flink为不同的环境和资源管理工具提供了不同资源管理器,比如YARN、 Mesos、K8s,以及standalone部署。
(3)、当JobManager申请插槽资源时,ResourceManager会将有空闲插槽 的TaskManager分配给JobManager。如果ResourceManager没有足 够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会 话,以提供启动TaskManager进程的容器。
4、分发器(Dispatcher)
(1)、可以跨作业运行,它为应用提交提供了REST接口。
(2)、当一个应用被提交执行时,分发器就会启动并将应用移交给一个 JobManager。
(3)、Dispatcher也会启动一个Web UI,用来方便地展示和监控作业 执行的信息。
(4)、Dispatcher在架构中可能并不是必需的,这取决于应用提交运行 的方式。
五、Flink任务流程
YARN中
六、什么是状态一致性
1、 有状态的流处理,内部每个算子任务都可以有自己的状态
2、对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计 算结果要保证准确
3、一条数据不应该丢失,也不应该重复计算
4、在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完 全正确的。
七、什么是 EXACTLY-ONCE(精确一次)
恰好处理一次是最严格的保证,也是最难实现的。恰好处理一次语义不仅仅 意味着没有事件丢失,还意味着针对每一个数据,内部状态仅仅更新一次。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。