带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(6)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 带你读《企业级云原生白皮书项目实战》——5.3.3 任务性能(6)

《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.3 任务性能(5): https://developer.aliyun.com/article/1228335


5.3.3.3.2 checkpoint失败解决方案

当Flink的任务出现checkpoint失败的时候,一般不会导致任务直接失败,但是checkpoint的失败会导致用户异常重启的时候无法从最近的checkpoint记录来恢复,会导致任务只能从最初的时间点或者是savepoint来进行恢复,可能会导致下游数据的重复,以及数均延迟增大,所以正常的checkpoint增量生成是flflink任务健康度的体现,如下图是一个checkpoint生成失败的情况

image.png


由上图可以看到,当前该任务是一直存在生成checkpoint失败的情况,Checkpoint 失败大致分为两种情况:Checkpoint Decline 和 Checkpoint Expire,此种情况经过分析后是 Checkpoint Expire的情况。

(1) Checkpoint Expire导致的Checkpoint失败

如果 Checkpoint 做的非常慢,超过了 timeout 还没有完成,则整个 Checkpoint 也会失败。当一个 Checkpoint 由于超时而失败是,会在 jobmanager.log 中看到如下的日志,同时也可以通过作业参数execution.checkpointing.interval 设置做Checkpoint的间隔时间。具体的JM日志可以发现如下Checkpoint 1 of job 78d268e6fbc19411185f7e4868a44178 expired before completing.表示 Chekpoint 1 由于超时而失败,这个时候可以可以看这个日志后面是否有类似下面的日志:

Received late message for now expired checkpoint attempt 1 from 0b60f08bf3793875b59f8d9bc74ce2e1 of job 78d268e6fbc194111c

如果任务开启了debug日志,我们按照下面的日志把 TM 端的 snapshot 分为三个阶段,开始做 snapshot 前,同步阶段,异步阶段:

DEBUGStarting checkpoint (604) CHECKPOINT on task taskNameWithSubtasks (4/4)

这个日志表示 TM 端 barrier 对齐后,准备开始做 Checkpoint。

DEBUG2019-08-06 13:43:02,613 DEBUG org.apache.flflink.runtime.state.AbstractSnapshotStrategy- DefaultOperatorStateBackend snapshot (FsCheckpointStorageLocation{fifileSystem=org.apache.flflink.core.fs.SafetyNetWrapperFileSystem@70442baf, checkpointDirectory=xxxxxxxx, sharedStateDirectory=xxxxxxxx,taskOwnedStateDirectory=xxxxxx, metadataFilePath=xxxxxx, reference=(default), fifileStateSizeThreshold=1024}, synchronous part) in thread Thread[Async callson Source: xxxxxx_source -> Filter (27/70),5,Flink Task Threads] took 0 ms.

上面的日志表示当前这个 backend 的同步阶段完成,共使用了 0 ms。

DEBUGDefaultOperatorStateBackend snapshot (FsCheckpointStorageLocation{fifileSystem=org.apache.flflink.core.fs.SafetyNetWrapperFileSystem@7908affffe, checkpointDirectory=xxxxxx, sharedStateDirectory=xxxxx,taskOwnedStateDirectory=xxxxx, metadataFilePath=xxxxxx, reference=(default), fifileStateSizeThreshold=1024}, asynchronous part) in thread Thread[pool-48-thread14,5,Flink Task Threads] took 369 m

上面的日志表示异步阶段完成,异步阶段使用了 369 ms。

在现有的日志情况下,我们通过上面三个日志,定位 snapshot 是开始晚,同步阶段做的慢,还是异步阶段做的慢,然后再按照情况继续进一步排查flflink任务情况,比如是否任务是否出现反压,任务数据量如何生生成的checkpoint大小等情况。


《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.3 任务性能(7): https://developer.aliyun.com/article/1228333

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
6月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
6月前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
6月前
|
Cloud Native 安全 大数据
云原生与大数据
【8月更文挑战第27天】云原生与大数据
88 5
|
1月前
|
编解码 弹性计算 大数据
软硬结合助力倚天云原生算力再进化,加速大数据、视频转码上云步伐
本文介绍了云原生算力的进化,重点讨论了倚天710 CPU在大数据和视频转码场景中的应用与优势。倚天710采用ARM架构,通过物理核设计和CIPU加速卡优化,显著提升了高负载下的性能稳定性,并在实际应用中帮助客户实现了20%-40%的性能提升和成本降低。此外,文章还探讨了操作系统、编译器等底层软件的优化,以及如何通过龙蜥社区和阿里云平台支持更多应用场景,助力企业实现高效迁移和性能优化。
|
3月前
|
人工智能 Cloud Native 算法
|
4月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
206 4
|
4月前
|
资源调度 分布式计算 大数据
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
159 0
|
6月前
|
SQL Shell API
实时计算 Flink版操作报错合集之任务提交后出现 "cannot run program "/bin/bash": error=1, 不允许操作" ,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
实时计算 Flink版操作报错合集之任务提交后出现 "cannot run program "/bin/bash": error=1, 不允许操作" ,是什么原因
|
6月前
|
监控 Cloud Native 流计算
实时计算 Flink版产品使用问题之如何查看和管理任务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 资源调度 Kafka
实时计算 Flink版操作报错合集之提交任务后,如何解决报错:UnavailableDispatcherOperationException
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。

热门文章

最新文章