Flink的核心功能 架构 任务执行过程的两个主要组件是作业管理器和任务管理器。主节点上的作业管理器启动工作节点。在工作节点上,任务管理器负责运行。任务管理器还可以同时运行多个任务。...任务的资源管理由Flink中的作业管理器完成。在Flink群集中,Flink作业作为YARN应用程序执行。HDFS用于存储恢复和日志数据,而ZooKeeper用于对作业进行高可用性协调。 ?...您可以使用Flink将应用程序的状态本地存储在状态后端中,以确保在访问已处理数据时降低延迟。您还可以创建检查点和保存点,以在持久性存储上对流式应用程序进行容错备份。 ?...检查点和保存点 可以创建检查点和保存点,以使Flink应用程序在整个管道中容错。Flink包含一个容错机制,该机制可以连续创建数据流的快照。快照不仅包括数据流,还包括附加的状态。...如果发生故障,则选择最新快照,然后系统从该检查点恢复。这保证了可以始终保持计算结果的一致性。当检查点由Flink创建和管理时,保存点由用户控制。保存点可以描述为已执行过程的备份。 ?
水印是嵌在流中的常规记录,计算程序通过水印获知某个时间点已到 在Flink中,水印由应用程序开发人员生成,这通常需要对相应的领域有一定的了解。...每条记录在处理顺序上严格地遵守在检查点之前或之后的规定,例如["b",2]在检查点之前被处理,["a",2]则在检查点之后被处理 图5-4:当Flink数据源(在本例中与keyBy算子内联)遇到检查点屏障时...Flink用户还可以通过另一个特性有意识地管理状态版本,这个特性叫作保存点(savepoint) 保存点与检查点的工作方式完全相同,只不过它由用户通过Flink命令行工具或者Web控制台手动触发,而不由...和检查点一样,保存点也被保存在稳定存储中 对保存点的另一种理解是,它在明确的时间点保存应用程序状态的版本 图5-9:手动触发的保存点(以圆圈表示)在不同时间捕获正在运行的Flink应用程序的状态 图5...新版本可以从旧版本生成的一个保存点处开始执行 保存点可用于应对流处理作业在生产环境中遇到的许多挑战 应用程序代码升级 Flink版本更新 维护和迁移 假设模拟与恢复 A/B测试 图5-11:在该应用程序架构中
可以通过多种方式启动 JobManager 和 TaskManager:直接在机器上作为 standalone 集群启动、在容器中启动、或者通过YARN等资源框架管理并启动。...Dispatcher Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用程序执行,并为每个提交的作业启动一个新的 JobMaster。...TaskManagers: TaskManager(也称为 worker)执行作业流的 task,并且缓存和交换数据流。 必须始终至少有一个 TaskManager。...Flink也有自己的解决办法,主要的办法是给定一个允许延迟的时间,在该时间范围内仍可以接受处理延迟数据 设置允许延迟的时间是通过allowedLateness(lateness: Time)设置 保存延迟数据则是通过...Flink CEP编程中当状态没有到达的时候会将数据保存在哪里 在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是watermark的处理逻辑。
5、在流数据处理中,有没有遇到过数据延迟等问题,通过什么处理呢? 有遇到过数据延迟问题。举个例子: 案例1: 假你正在去往地下停车场的路上,并且打算用手机点一份外卖。...保存点在 Flink 中叫作 Savepoint,是基于 Flink 检查点机制的应用完整快照备份机制, 用来保存状态 可以在另一个集群或者另一个时间点,从保存的状态中将作业恢复回来。...启动方式如下: /bin/flink -s /flink/checkpoints/03112312a12398740a87393/chk-50/_metadata 22、当作业失败后,从保存点如何恢复作业...从保存点恢复作业并不简单,尤其是在作业变更(如修改逻辑、修复 bug) 的情况下, 需要考虑如下几点: (1)算子的顺序改变 如果对应的 UID 没变,则可以恢复,如果对应的 UID 变了恢复失败。...(3)从作业中删除了一个有状态的算子 默认需要恢复保存点中所记录的所有算子的状态,如果删除了一个有状态的算子,从保存点回复的时候被删除的OperatorID找不到,所以会报错 可以通过在命令中添加 --
统一的作业提交逻辑 在此之前,提交作业是由执行环境负责的,且与不同的部署目标(例如 Yarn, Kubernetes, Mesos)紧密相关。...Flink设计者认为:有限流处理是无限流处理的一种特殊情况,它只不过在某个时间点停止而已。Flink通过一个底层引擎同时支持流处理和批处理。...首先要确定问题产生的原因,找到最耗时的点,确定性能瓶颈点。比如任务频繁反压,找到反压点。 主要通过:资源调优、作业参数调优。...检查flink程序有没有数据倾斜,可以通过 flink 的 ui 界面查看每个分区子节点处理的数据量。...Flink的状态是按key组织并保存的,如果程序逻辑内改了keyBy()逻辑或者key的序列化逻辑,就会导致检查点/保存点的数据无法正确恢复。
可以将广播流(如上下文数据、机器学习模型、规则 / 模式、触发器等)与可能带有键控状态(KeyedState)的流(如特征向量、状态机等)连接在一起。而在 Flink 1.5 之前,很难做到这一点。...此外,新版本还简化了在容器管理基础设施(如 Kubernetes)上进行的部署,所有对 JobManager 的请求都通过 REST 发起,包括提交和取消作业、请求作业状态,获取保存点等。...此次改进也为 Flink 将来与 Kubernetes 更好的集成奠定了基础。在稍后的版本中,有可能在不先启动 Flink 集群的情况下,将作业塞进 Docker,并作为容器部署的一部分。...Flink 现在支持 OpenStack 的类 S3 文件系统 Swift,用于保存检查点和保存点。Swift 可以在没有 Hadoop 依赖的情况下使用。...应用程序可以在无需手动触发保存点的情况下进行伸缩。实际上,Flink 仍然会保存一个保存点,然后停止应用程序并重新调整并行度。
但是在流处理中却不能这样处理。数据流是无穷无尽的,没有开始点和结束点。带有缓冲的数据流可以进行重放一小段数据,但从最开始重放数据流是不切实际的(流处理作业可能已经运行了数月)。...实际上,所有精心设计的流处理系统(包括下面讨论的Flink和Google Dataflow)在通过网络传输之前都会缓冲许多记录,同时又具备连续的处理能力。 4....如果可以经常执行上述操作,那么从故障中恢复意味着仅从持久存储中恢复最新快照,并将流数据源(例如,Apache Kafka)回退到生成快照的时间点再次’重放’。...Flink实现了每核每秒大约720,000个事件的吞吐量,启动检查点后降至690,000。请注意,Flink在每个检查点都要备份算子的状态,而Storm则不支持。...Flink算子在将记录发送到下一个算子之前会暂存储在缓冲区中。通过指定缓冲区超时时间,例如10毫秒,我们可以告诉Flink在缓冲区满了时或者到达10毫秒时发送缓冲区数据。
CEP 编程中当状态没有到达的时候会将数据保存在哪里 15.讲一下 flink 的运行架构 16.讲一下 flink 的作业执行流程 17.flink 中的时间概念 , eventTime 和 processTime...Flink 也有自己的解决办法,主要的办法是给定一个允许延迟的时间,在该时间范围内仍可以接受处理延迟数据设置允许延迟的时间是通过 allowedLateness(lateness: Time)设置保存延迟数据则是通过...14.Flink CEP 编程中当状态没有到达的时候会将数据保存在哪里 在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是 watermark 的处理逻辑...16.讲一下 flink 的作业执行流程 以 yarn 模式 Per-job 方式为例概述作业提交执行流程 当执行 executor() 之后,会首先在本地 client 中将代码转化为可以提交的 JobGraph...这个时间通常是在事件到达 Flink 之前就确定的,并且可以从每个事件中获取到事件时间戳。在 EventTime 中,时间取决于数据,而跟其他没什么关系。
处理无界数据通常要求以特定顺序获取,以便判断事件是否完整、有无遗漏。 2、有界数据 有界数据就是在一个确定的时间范围内的数据流,有开始有结束,一旦确定了就不会再改变。...所以Flink提供了检查点的执行异步和增量检查点,以便尽量降低生成和保存检查点带来的计算负荷,避免数据处理的延迟异常变大和吞吐量的短暂剧降。...1.3、高吞吐、低延迟 Flink借助轻量级分布式快照机制,能定时生成分布式快照,并保存到外部存储中。检查点之间的数据处理被当做是原子的。如果失败,直接回到上一个检查点重新执行。...作业调度:调度流批作业的执行。 容错:提供了集群级、应用级容错处理机制,保障集群、作业的可靠运行。...JobManager:根据并行度将Flink客户端提交的Flink应用分解为子任务,从资源管理器申请所需要的的计算资源,资源具备后,开始分发任务到TaskManager执行Task,并负责应用容错,跟踪作业的执行状态
Flink Flink 核心特点 批流一体 所有的数据都天然带有时间的概念,必然发生在某一个时间点。把事件按照时间顺序排列起来,就形成了一个事件流,也叫作数据流。...在Flink的测试中,部分操作在堆外内存上会比堆上内存慢 大内存(上百GB)JVM的启动需要很长时间,Full GC可以达到分钟级。...与分阶段调度基本一样,区别在于该模式下使用批处理资源申请模式,可以在资源不足的情况下执行作业,但是需要确保在本阶段的作业执行中没有Shuffle行为) 关键组件 JobMaster 调度执行和管理(将JobGraph...转化为ExecutionGraph,调度Task的执行,并处理Task的异常) InputSplit 分配 结果分区跟踪 作业执行异常 作业Slot资源管理 检查点与保存点 监控运维相关 心跳管理 Task...从作业中删除了一个有状态的算子,默认需要恢复保存点中所记录的所有算子的状态,如果删除了一个有状态的算子,从保存点恢复的时候被删除的OperatorID找不到,所以会报错,可以通过在命令中添加-allowNonRestoredState
在正式运行之前请检查: 类名是否有拼写错误 确定是否将相关的业务代码依赖打进 JAR 包中 基础运维 作业监控 流计算 Oceanus 提供强大的作业监控能力,我们可以通过【监控】项查看作业的各项指标...信息类 ETL 运行信息类 下图为作业运行信息类示例 此外,流计算 Oceanus 还支持将 Flink 指标上报到 Prometheus,用户可以自行保存、分析和展示作业的各项指标。...总结 本文首先对出现的最基础的、用户可以自己解决的常见报错做了一些总结,这些错误常常出现在作业启动之前,所以在作业正式启动之前,用户需要自己检查好这些类型的错误,保证作业能够顺利的启动。...之后介绍了下作业启动之后的一些基础运维手段,包括实时监控和告警通知,方便用户及时了解作业的具体运行情况。最后介绍了在作业失败之后通过日志关键字定位问题的方法,具体可以查看 日志诊断指南[6]。...2、检查是否将主类打包进去 常见异常关键字: 常见运行错误类型 关键字 作业失败原因 通过 from RUNNING to FAILED 关键字搜索,Caused by 后即为失败原因 是否发生过 OOM
在阅读本文之前,你应该阅读过的系列: 《Flink重点难点:时间、窗口和流Join》 《Flink重点难点:网络流控和反压》 《Flink重点难点:维表关联理论和Join实战》 《Flink重点难点:内存模型与内存结构...Checkpoints(检查点) Flink中基于异步轻量级的分布式快照技术提供了Checkpoints容错机制,Checkpoints可以将同一时间点作业/算子的状态数据全局统一快照处理,包括前面提到的算子状态和键值分区状态...恢复步骤2:从检查点重置任务状态 紧接着从检查点的快照信息中读取出输入源的偏移量以及算子计算的结果,进行状态的恢复。...从检查点恢复后,它的内部状态会和生成检查点的时候完全一致,并且会紧接着重新处理那些从之前检查点完成开始,到发生系统故障之间已经处理过的数据。...JobManager通过向所有Source发送消息来启动Checkpoints生成流 此时JobManager向每一个Source任务发送一个新的Checkpoints编号,以此启动Checkpoints
在正式运行之前请检查: 类名是否有拼写错误 确定是否将相关的业务代码依赖打进 JAR 包中 基础运维 作业监控 流计算 Oceanus 提供强大的作业监控能力,我们可以通过【监控】项查看作业的各项指标...信息类 ETL 运行信息类 下图为作业运行信息类示例 云监控.png 此外,流计算 Oceanus 还支持将 Flink 指标上报到 Prometheus,用户可以自行保存、分析和展示作业的各项指标...总结 本文首先对出现的最基础的、用户可以自己解决的常见报错做了一些总结,这些错误常常出现在作业启动之前,所以在作业正式启动之前,用户需要自己检查好这些类型的错误,保证作业能够顺利的启动。...之后介绍了下作业启动之后的一些基础运维手段,包括实时监控和告警通知,方便用户及时了解作业的具体运行情况。最后介绍了在作业失败之后通过日志关键字定位问题的方法,具体可以查看 日志诊断指南[6]。...2、检查是否将主类打包进去 常见异常关键字: 常见运行错误类型 关键字 作业失败原因 通过 from RUNNING to FAILED 关键字搜索,Caused by 后即为失败原因 是否发生过 OOM
这样当作业失败之后,就可以通过远程⽂件系统⾥⾯保存的 Checkpoint 来进⾏回滚:先把 Source 回滚到 Checkpoint 记录的offset,然后把有状态节点当时的状态回滚到对应的时间点...TaskManager是实际负责执行计算的Worker,在其上执行Flink Job的一组Task,每个TaskManager负责管理其所在节点上的资源信息,如内存、磁盘、网络,在启动的时候将资源的状态向...一旦完成快照n,job将永远不再向数据源请求Sn之前的记录,因为此时这些记录(及其后续记录)将已经通过整个数据流拓扑,也即是已经被处理结束。...12,Flink CEP 编程中当状态没有到达预期数据保存在哪里? 在流式处理中,CEP 当然是要支持 EventTime 的,那么相对应的也要支持数据的迟到现象,也就是watermark的处理逻辑。...yarn-session模式:这种⽅式需要先启动集群,然后在提交作业,接着会向yarn申请⼀块空间后,资源永远保持不变。
、数据Sink的接口、作业配置接口、作业启动执行的入口。...环境对象关系如下: 1.1 执行环境 StreamExecutionEnvironment是Flink流计算应用的执行环境,是Flink作业开发和启动执行的入口,开发者对StreamExecutionEnvironment...这是Scala Shell执行环境,可以在命令行中交互式开发Flink作业。...SavepointRuntimeContext:支持对检查点和保存点进行操作,包括读取、变更、写入等。 CepRuntimeContext:CEP复杂事件处理中使用的上下文。...2)uid:用户指定的uid,该uid的主要目的是在job重启时再次分配跟之前相同的uid,可以持久保存状态。 3)bufferTimeout:buffer超时时间。
本文内容主要包括: Flink的数据流图,以及如何将数据流图从逻辑视角转化为物理执行图; Flink分布式架构; Flink时间处理机制; Flink状态与检查点机制; 阅读完本章后,读者可以对Flink...于是可以将一个作业从开头到结尾的所有Subtask都放置在一个槽位中,如图 9中最左侧的数据流,这样槽位内的数据交换成本更低。...4 Flink的状态和检查点 4.1 状态 在之前的文章中我们已经提到了状态的概念:流式大数据处理引擎会根据流入数据持续更新状态数据。...4.2 检查点 一致性检查点 在一个有状态的流处理作业中,为保证高吞吐和低延迟,Flink的每个Task需要高效读写状态数据,Task会在本地的TaskManager中存储状态数据。...状态后端 Task在本地内存中保存一份状态数据,但在分布式系统中,某个Task在任意时间点都可能发生故障,因此Task上的本地状态数据可以被认为是脆弱的。
很多公司的数据流非常依赖SQL,Flink SQL降低了从其他框架迁移至Flink的成本。 Flink数据流图 之前的文章曾提到了流式计算引擎逻辑视角与物理视角。 ?...JobManager接受到作业后,将逻辑视角的数据流图转化成可并行执行的物理视角数据流图。 JobManager将物理视角数据流图发送给各TaskManager。...TaskManager中的任务启动、运行、性能指标、结束或终止等状态信息会反馈给JobManager。 用户可以使用Flink Web仪表盘来监控提交的作业。...在实现TaskManager过程中,Flink在一个Java进程(Process)中启动多个线程(Thread)来并行执行这些任务。...小结 本文简述了Flink的一些核心概念,包括系统架构、时间处理、状态与检查点。用户可以通过本文了解Flink的基本运行方式。
步骤4.调度器分配问题排查YARN-9050 支持在 WebUI 上或通过 REST API 自动诊断应用问题,将在 Hadoop3.3.0 发布,之前的版本仍需进行人工排查: 检查集群或 queue...检查flink程序有没有数据倾斜,可以通过 flink 的 ui 界面查看每个分区子节点处理的数据量。...Flink的状态是按key组织并保存的,如果程序逻辑内改了keyBy()逻辑或者key的序列化逻辑,就会导致检查点/保存点的数据无法正确恢复。...binlog的全量数据,导致了全局锁一直在等待,所有作业都无法执行。...当遇到怀疑数据缺失造成的计算结果不正确时,首先需要检查作业逻辑是否不小心过滤了一些正常数据。检查方法可以在本地运行一个 Mini Cluster,也可以在远端的调试环境进行远程调试或者采样等。
/flink-1.13.0 atguigu@hadoop104:/opt/module 启动集群 在hadoop100节点服务器上执行start-cluster.sh启动Flink集群: $ bin/...我们需要先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业。集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源。 会话模式比较适合于单个规模小、执行时间短的大量作业。...7.4.3 单作业模式部署 在YARN环境中,由于有了外部平台做资源调度,所以我们也可以直接向YARN提交一个单独的作业,从而启动一个Flink集群 执行命令提交作业。...8.3.3 单作业(Per-Job)模式 在单作业模式下,Flink集群不会预先启动,而是在提交作业时,才启动新的JobManager。...在流处理的底层实现过程中,实际上是将中间“合并的结果”作为任务的一个状态保存起来的;之后每来一个新的数据,就和之前的聚合状态进一步做归约。
从保存点启动应用程序时,Flink会将保存点的状态数据重新分配给相应的算子任务。 1. 保存点的用途 保存点与检查点最大的区别,就是触发的时机。...这时不需要重新执行所有的计算,只要创建一个保存点,停掉应用、升级Flink后,从保存点重启就可以继续处理了。...当然对于单独的作业,我们也可以在程序代码中通过执行环境来设置: env.setDefaultSavepointDir("hdfs:///flink/savepoints"); 由于创建保存点一般都是希望更改环境之后重启...除了对运行的作业创建保存点,我们也可以在停掉一个作业时直接创建保存点: bin/flink stop --savepointPath [:targetDirectory] :jobId (2)从保存点重启应用...细心的读者可能还记得我们在第三章使用web UI进行作业提交时,可以填入的参数除了入口类、并行度和运行参数,还有一个“Savepoint Path”,这就是从保存点启动应用的配置。
领取专属 10元无门槛券
手把手带您无忧上云