云计算与大数据技术 课件 第12章 Flink计算平台与实践_第1页
云计算与大数据技术 课件 第12章 Flink计算平台与实践_第2页
云计算与大数据技术 课件 第12章 Flink计算平台与实践_第3页
云计算与大数据技术 课件 第12章 Flink计算平台与实践_第4页
云计算与大数据技术 课件 第12章 Flink计算平台与实践_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Flink简介Flink简介Flink是一个分布式大数据处理引擎和框架,用于在无边界和有边界的数据流上进行有状态的计算。Flink是一个为了提升流处理性能而创建的平台,它非常适用于各种需要低延迟(微秒到毫秒级)的实时数据处理场景。Flink简介阿里巴巴的实时计算平台在“双十一”期间能平稳运行,计算峰值可达到每秒40亿条记录,数据量可达到每秒7TB。该计算平台就采用了Flink流处理技术.Flink的特点是实现了真正的实时流处理,支持低延迟、高吞吐量和exactly-once语义。Spark和Flink的比较Flink的分层抽象APIFlink根据抽象程度分层,提供了不同级别的API。每个层次的API在简洁性和表达力上有不同的侧重点,并且针对不同的应用场景。Flink的分层抽象APIFlink为流处理和批处理提供了两套强大的DataStreamAPI和DataSetAPI,以满足流处理和批处理中的各种场景需求,并在更高层级提供了一种关系型的TableAPI和SQLAPI来实现FlinkAPI的流处理与批处理的统一。Flink应用场景Flink已广泛应用于实时ETL,如实时数仓、商业数据即席分析、特征工程和在线数据服务等对稳定性要求比较高的场景。Flink简介Flink对以下场景有非常好的支持1.实时智能推荐2.复杂事件处理3.实时欺诈检测4.实时数仓与ETL5.流数据分析6.实时报表分析Flink简介Flink软件栈和程序Flink软件栈Flink软件栈核心是DistributedStreamingDataflow,用于执行数据流处理程序。Flink运行时程序是一个通过有状态的算子连接的数据流的有向无环图(DAG),对上层提供有限数据流的DataSetAPI和无限数据流的DataStreamAPI。Flink软件栈部署层主要涉及Flink的部署方式。Runtime核心层主要负责为上层不同接口提供基础服务。API&Libraries层提供支持流处理和批处理的丰富API。Flink程序执行流程当一个Flink程序的执行时,它会被映射为StreamingDataflow。一个StreamingDataflow是由一组Stream和TransformationOperator组成的,它类似于一个DAG,在启动时从一个或多个SourceOperator开始,结束于一个或多个SinkOperator。Flink程序执行流程Flink对数据的处理被抽象为以下三步。(1)接收数据:接收一个或多个数据源。(2)处理数据:执行若干用户需要的转换算子。(3)输出处理结果:将转换后的结果输出。Flink程序执行流程Flink运行时架构Flink运行时架构Flink集群主要由三部分组成:JobManager、TaskManager和客户端(Client),这三者各自运行在独立的Java虚拟机(JVM)进程中。当Flink集群启动时,至少会启动一个JobManager和一个TaskManager,但根据集群规模和作业需求,可以启动多个TaskManager。客户端将任务提交给JobManager,JobManager将任务拆分成Task并调度到各个TaskManager中执行,最后TaskManager将Task执行的情况汇报给JobManager。Flink运行时架构Flink运行时架构Flink提供了专门的客户端(Client)用于提交作业(Job)到集群中。在服务端,Flink采用了分布式的主从架构,其中JobManager作为主节点,而TaskManager作为从节点或工作节点。JobManager负责管理计算资源(TaskManager)和任务的调度,同时创建检查点(Checkpoint)以进行容错处理;TaskManager则负责实际执行SubTask。Flink运行时架构这种主从架构的设计使得Flink能够高效地处理大规模数据流,并提供了高可用性和容错功能,通过检查点机制来确保在故障发生时能够恢复作业的状态,并从故障点继续执行,从而保证了数据的可靠性和一致性。Flink任务提交流程Flink不仅可以部署在包括YARN、Mesos、Kubernetes在内的多种资源管理框架上,还支持在裸机集群上独立部署,同时能轻松部署在云端。在不同的部署环境下,Flink任务的提交流程可能会有所不同,以满足特定的环境和需求。在独立模式(Standalone)下,有会话(Session)模式和应用(Application)模式两种部署方式。在YARN集群模式下,有会话模式、单作业(Per-Job)模式和应用模式3种部署方式。Flink时间处理机制Flink时间处理机制Flink的无限数据流是一个持续的过程,而时间是判断业务状态是否滞后,数据处理是否及时的重要依据。Flink中针对Stream流事件中的Time分为EventTime、IngestionTime、ProcessingTime。Flink时间处理机制EventTime(事件时间)是指每个事件在其设备上发生的时间,通常由事件中的时间戳来描述。Flink时间处理机制IngestionTime(接收时间)是指事件进入Flink(FlinkSource)的时间,是由SourceOperator自动根据当前时间生成的,每个事件将进入Flink时的时间作为时间戳。ProcessingTime(处理时间)是指事件被处理时机器当前的系统时间,与机器相关。Flink时间窗口Flink流数据处理过程中经常用到窗口(Window)的概念。基于业务数据方面的考虑,Flink支持两种类型的窗口:一种是基于时间的窗口,即TimeWindow;另一种是基于输入数据数量的窗口,即CountWindow。Flink时间窗口TimeWindow可以分为3种类型,分别是滚动窗口(TumblingWindow,窗口和窗口之间没有数据重叠)、滑动窗口(SlidingWindow,会出现数据重叠)和会话窗口(SessionWindow,由不活动的间隙打断)。

滚动时间窗口Flink时间窗口滑动窗口(SlidingWindow)是在滚动时间窗口的基础上增加了滑动步长(SlideSize),且允许窗口之间的数据发生重叠。Flink时间窗口滚动数量窗口(TrublingCountWindow)会话窗口(SessionWindow)Flink时间窗口Flink时间窗口Flink时间窗口Flink时间窗口Flink时间处理机制Flink状态-StateState是Flink中一个非常基本且重要的概念,State的字面意义为状态。Flink支持有状态计算。无状态是指每个事件都是独立的,各个事件之间没有关联,输出结果只与当前事件有关联。比如电子围栏报警系统,当触发设置的电子围栏时就进行告警。有状态是指当前的事件与之前的事件状态有关联,输出结果需要结合之前各个事件的输出结果。比如,淘宝“双十一”活动实时战报的实时总成交金额播报等。Flink状态-State有状态计算是指在程序计算过程中,程序内部存储计算会产生中间结果,并且会被提供给后续的算子进行计算,如Flink中的sum和reduce算子。Flink状态-StateEventTime(事件时间)是指每个事件在其设备上发生的时间,通常由事件中的时间戳来描述。Flink状态-State引入背景Flink提供了State来存放计算过程中计算节点的中间结果或元数据属性等,并提供了Exactly-Once语义。由于流计算大多数的场景都是增量计算,数据需要逐条处理,当前结果都是基于上一次的计算结果进行处理的,这就要求将上一次的计算结果进行存储持久化。Flink容错机制Flink属于分布式数据流处理引擎,而分布式数据流处理引擎必须面对的问题就是故障,例如进程被强制关闭、服务器宕机、网络连接中断等。当出现以上故障时,会造成Flink作业意外失败,需要在重启后进行恢复,要想State的值不从头开始计算,就需要进行容错处理。为了保证计算过程中出现异常时可以进行容错处理,需要将中间的计算结果State存储起来。Flink容错机制State使用Checkpoint(类似于Windows系统发生死机等问题时,恢复系统到某个时间点的恢复点)机制进行容错处理,可以理解为从Checkpoint(检查点)处恢复。Flink为了进行实时容错处理,将中间结果定期存储起来,在出现故障时将系统重置为正确的状态,这种定期触发中间存储结果的机制称为CheckPointing。Flink容错机制-Checkpoint

Checkpoint是Flink用来从故障中恢复的容错机制。它可以根据周期性的基于Stream中各个Operator的状态配置来生成快照,从而将这些状态数据定期、持久化地存储起来。当作业出现意外崩溃的情况时,通常需要和错误恢复机制(作业重启策略或Failover策略)配合使用。Flink容错机制-Checkpoint

Flink作业会根据作业重启策略自动重启并通过最近一个成功的快照(Checkpoint)来恢复状态。合适的作业重启策略可以减少作业不可用时间并避免人工介入故障处理的运维成本,因此对Flink作业稳定性来说有着举足轻重的作用。Flink的

Exactly-Once语义数据流处理引擎经常被广泛讨论的特征是处理语义,而Exactly-Once语义是其中最受欢迎的。很多数据流处理引擎都声称它们提供Exactly-Once语义。同时,Exactly-Once语义是Flink、Spark等流处理系统的核心特性之一,那么Exactly-Once语义究竟是什么呢?流处理语义要求机制保证在任务或数据出错时,数据是正确且有效的。Flink的Exactly-Once语义Exactly-Once(恰好一次):Exactly-Once也被称为精确一次,表示一条数据从被接收到后续被处理成功,只会被正确地处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论