记一次Flink任务无限期INITIALIZING排查过程

1.前言

环境:Flink-1.16.1,部署模式:Flink On YARN,现象:Flink程序能正常提交到 YARN,Job状态是 RUNNING,而 Task状态一直处于 INITIALIZING,如下图:
在这里插入图片描述

通过界面可以看到 flink任务一直没有执行,处于初始化状态,观察到初始化状态最长可持续 10几个小时。


补充:Flink On YARN模式如何打开 Flink任务监控页面。首先,打开 YARN任务管理界面(默认 8088端口),找到运行中的 flink任务,点击下图中的 ApplicationMaster即可。
在这里插入图片描述

2.通过大模型获取问题排查思路

笔者:Source: kafkaReader_3 -> router_4 -> (Sink: rdbWriter_6, Sink: kafkaWriter_8) 状态 INITIALIZING的原因

GPT:

在 Flink 中,INITIALIZING 状态表示作业的一个任务(task)正在初始化。具体到你提供的例子,Source: kafkaReader_3 -> router_4 -> (Sink: rdbWriter_6, Sink: kafkaWriter_8) 是一个任务链,包括一个 Kafka 数据源(kafkaReader_3)、一个数据处理算子(router_4),以及两个数据汇(Sink: rdbWriter_6 和 Sink: kafkaWriter_8)。当任务启动时,它会经历一系列的状态转换,其中之一就是 INITIALIZING。这个状态表示任务正在进行初始化操作,例如创建连接、加载配置、准备资源等。在初始化完成后,任务会进入 RUNNING 状态,开始正常的数据处理和计算。需要注意的是,INITIALIZING 状态只是任务的一个瞬时状态,表示任务正在初始化过程中。如果任务长时间停留在 INITIALIZING 状态,可能存在初始化过程出现问题的情况,例如资源不足、连接失败等。在正常情况下,任务应该尽快从 INITIALIZING 状态转移到 RUNNING 状态以继续执行数据处理逻辑。因此,如果你的任务一直停留在 INITIALIZING 状态,建议检查相关的日志以了解初始化过程中是否发生了错误或异常。同时,还可以检查资源分配、网络连接等因素,以确保任务能够成功初始化并转移到 RUNNING 状态。

3.检查 YARN资源

打开 YARN任务监控页面,左侧 Nodes页面可以查看集群可用的计算节点个数,Scheduler页面可以看到队列资源占用情况,以及CPU和内存占用情况。

4.查看 JobManager和 TaskManager的日志

查看日志有两种方式:

  • 通过 flink任务监控页面

  • 通过 登录计算节点所在服务器

    ll /home/yarn_data/log/application_1708676775521_0024/container_e07_1708676775521_0024_01_000002-rw-r--r-- 1 yarn ocdp  8907 Mar  7 11:41 directory.info
    -rw-r--r-- 1 yarn ocdp 18796 Mar  7 15:42 gc.log.0.current
    -rw-r----- 1 yarn ocdp 15772 Mar  7 11:41 launch_container.sh
    -rw-r--r-- 1 yarn ocdp     0 Mar  7 11:41 prelaunch.err
    -rw-r--r-- 1 yarn ocdp   100 Mar  7 11:41 prelaunch.out
    -rw-r--r-- 1 yarn ocdp  1270 Mar  7 11:41 taskmanager.err
    -rw-r--r-- 1 yarn ocdp 71955 Mar  7 11:46 taskmanager.log
    -rw-r--r-- 1 yarn ocdp 66686 Mar  7 11:46 taskmanager.out
    

5.查看 Flink程序堆栈信息

通过 flink任务监控页面查看 Thread Dump,如下图:

在这里插入图片描述

这里我把关键部分堆栈摘抄下来了:

{"threadName": "Source: kafkaReader_3 -> router_4 -> (Sink: rdbWriter_6, Sink: kafkaWriter_8) (1/1)#0","stringifiedThreadInfo": "\"Source: kafkaReader_3 -> router_4 -> (Sink: rdbWriter_6, Sink: kafkaWriter_8) (1/1)#0\" Id=72 WAITING on java.util.concurrent.CountDownLatch$Sync@6792895f\n\tat sun.misc.Unsafe.park(Native Method)\n\t-  waiting on java.util.concurrent.CountDownLatch$Sync@6792895f\n\tat java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)\n\tat java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)\n\tat java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)\n\tat java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)\n\tat java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)\n\tat org.apache.kafka.clients.producer.internals.TransactionalRequestResult.await(TransactionalRequestResult.java:50)\n\tat org.apache.kafka.clients.producer.KafkaProducer.initTransactions(KafkaProducer.java:569)\n\t...\n\n"
}

这里主要就是看线程名称为 任务名称的,比如这里就是:

Source: kafkaReader_3 -> router_4 -> (Sink: rdbWriter_6, Sink: kafkaWriter_8)

可以看到笔者编写的 flink程序阻塞的原因是:initTransactions,在初始化事务。

6.总结

如果碰到了 flink程序长时间处于初始化状态,比较可行的排查思路是:检查YARN计算资源查看 JobManager和 TaskManager的日志查看 flink程序堆栈信息。另外,可以把问题的尽量描述清楚,让大模型来分析可能的原因,并提供排查思路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小火星露谷模组管理页面简介

1. 已有详细介绍的功能 模组管理页面部分功能已经有较为详细的介绍: 添加模组:https://svmbbs.smallfire.cn/d/15-dian-nao-zhong-yi-jing-you-duo-ge-mo-zu-ya-suo-wen-jian-ru-he-pi-liang-an-zhuang一键更新模组:https://svmbbs.smallfi…

python基础——入门必备知识

📝前言: 本文为专栏python入门基础的第一篇,主要带大家先初步学习一下python中的一些基本知识,认识,了解一下python中的一些专有名词,为日后的学习打下良好的基础,。本文主要讲解以下的python中的基本语法&…

苹果发布iOS17.4正式版升级,罕见带来一大波新功能!苹果数据备份软件 iOS系统管理软件 苹果数据备份到icloud iOS系统数据处理

近日,苹果发布了iOS17.4正式版,没想到的是居然有一大波新功能,如果你也是用iPhone的话,尤其是iPhone15新系列的,那么推荐你一定要升级下。下面让我给大家详细讲讲: 「电池健康」升级 电池设置界面得到了优…

数字孪生10个技术栈:原型设计,界面从无到有雏形的第一步。

一、什么是原型设计 可视化界面的原型设计是指在设计过程中创建一个低保真或高保真的可视化模型,以展示和演示最终产品的外观、布局和交互。它是设计师和开发团队在实际开发之前用来验证和确认设计方案的一个重要步骤。 可视化界面的原型设计主要包括以下几个方面&…

【OpenCV】仿 IOS 锁屏时钟

OpenCV 是一个开源的计算机视觉(Computer Vision)与机器学习软件库,提供了多种图像处理算法与接口。在图像处理中,按位运算是一类重要的运算,可以用于提取图像的重要部分。本文主要记录如何使用 OpenCV-Python 绘制仿 …

grid布局所有元素在同一行显示且等分列

目录 一、问题 二、实现方式 三、总结 tiips:如嫌繁琐,直接移步总结即可! 一、问题 1.grid布局可以通过 grid-template-columns来指定列的宽度。且可以通过repeat来指定重复的次数。但是现在的需求是:grid布局中元素的数量不确定&#…

一篇文章带你通关并查集(持续更新中)

这篇文章的所有题目均来自于自行整理,代码均来自于自行梳理调试(思路可能比较暴力)。初衷在于整理练习思路,且起到督促自己学习的作用 本文分成将三个模块 1.普及组 (洛谷黄题) 2.提高组 (洛…

sqlserver 默认端口号不通 1433 开启监听

1.打开SQL Server 2022 配置管理器 查看这3个东西是否启用,然后双击TCP/IP 把默认端口全部设置成1433 然后cmd netstat -an | find "1433" 查看端口是否打开监听

存储架构 NAS 与 SAN:有什么区别?

SAN(Storage Area Network)和NAS(Network Attached Storage)是两种存储架构,它们在数据存储和管理方面有着不同的设计理念和应用场景。SAN通常将存储设备连接到一个独立的高速网络,而NAS则通过普通的网络协…

Unity性能优化篇(九) 模型优化之LOD技术概述以及操作方法

LOD模型优化技术概述: 1.LOD技术可以根据摄像头远近来显示不同精度的模型(例如吃鸡游戏 随着跳伞高度 来显示下面树木以及建筑的模型精度) LOD模型优化技术操作方法: 可使用Unity自带的LOD Group组件,并根据项目的情况来调整该组件的属性。Untiy资源商店也有一些其…

如何选择VR全景设备,才能拍摄高质量的VR全景?

随着VR全景技术的不断成熟和发展,VR全景已经成为了摄影爱好者乐于尝试的新手段,VR全景也为广大用户提供了一个全新的视角来探索世界,如果想要拍摄出高质量的VR全景,选择合适的VR全景拍摄设备以及掌握正确的拍摄技巧才是关键。 VR全…

云手机:网页运行?易用性分析

云手机作为一种新兴的技术,近年来在移动互联网领域备受关注。它通过云计算技术,将手机的操作系统和应用程序运行在远程服务器上,用户通过网络连接访问和操作云手机,从而实现了在任何设备上都能够享受手机的功能和体验。本文将探讨…

vue系列——vscode,node.js vue开发环境搭建

第一步安装node.js 推荐使用nvm进行node.js 的安装 nvm(Node.js version manager) 是一个命令行应用,可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 可以去网上查找相关版本 我这里使用 nvm-setu… 链接:https://pan.baidu.com/s/1UEUtmzw5x…

代码随想录算法训练营第三十九天|动态规划|62.不同路径、63. 不同路径 II

62.不同路径 文章 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&…

12.WEB渗透测试-Linux系统管理、安全加固(下)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:11.WEB渗透测试-Linux系统管理、安全加固(上)-CSDN博客 Linux任务…

好书安利:《大模型应用开发极简入门:基于GPT-4和ChatGPT》这本书太好了!150页就能让你上手大模型应用开发

文章目录 前言一、ChatGPT 出现,一切都变得不一样了二、蛇尾书特色三、蛇尾书思维导图四、作译者简介五、业内专家书评总结 前言 ​如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,Chat…

【RabbitMQ】WorkQueue

📝个人主页:五敷有你 🔥系列专栏:MQ ⛺️稳中求进,晒太阳 Work Queues Work queues任务模型,简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息 当消息处理比较耗时的时候&…

力扣112 路径总和 Java版本

文章目录 题目描述解题思路代码 题目描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则&#xff0…

新型设备巡检方案-手机云巡检

随着科技的不断发展,设备巡检工作也在逐步向智能化、高效化方向转变。传统的巡检方式往往需要人工逐个设备检查,耗时耗力,效率低下,同时还容易漏检和误检。而新型设备巡检应用—手机蓝牙云巡检的出现,则为设备巡检工作…

每日OJ题_链表②_力扣24. 两两交换链表中的节点

目录 力扣24. 两两交换链表中的节点 解析代码 力扣24. 两两交换链表中的节点 24. 两两交换链表中的节点 难度 中等 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即&…