记一次 Flink 作业启动缓慢

记一次 Flink 作业启动缓慢

背景

应用发现,Hadoop集群的hdfs较之前更加缓慢,且离线ELT任务也以前晚半个多小时才能跑完。此前一直没有找到突破口所以没有管他,推测应该重启一下Hadoop集群就可以了。今天突然要重启一个Flink作业,发现有一个过程卡了五分钟。

现象

在这里插入图片描述

由上图可知09:36到09:41这两个过程中间花了五分钟,这两条都是Flink的日志,所以推测中间是Flink的某些过程卡住了。那Flink中间做了什么呢?

原因分析

可以看到这两条日志都是由flink同一个类所打印的:org.apache.flink.yarn.YarnClusterDescriptor ,所以去看下这个类的源码就知道了。
我们找到Flink源码的这个类org.apache.flink.yarn.YarnClusterDescriptor ,发现卡住之前的那条日志,也就是09:36那条日志,是由下面这条代码打印。

在这里插入图片描述

我们在看下 09:41 的那条日志是怎么打印的,我们找到了下面这个方法

在这里插入图片描述

看下在哪里调用了这个方法:
在这里插入图片描述

而正是startAppMaster这个方法调用了removeLocalhostBindHostSetting

在这里插入图片描述

现在我们再看下第一条日志代码位置

在这里插入图片描述

可以得出一个结论,卡住的代码是startAppMaster 方法从开始执行到调用 startAppMasterremoveLocalhostBindHostSetting 这个方法中间的那些代码,那我们可以看下这中间代码在做什么操作。
发现基本都是在调用YarnApplicationFileUploader 这个用于上传文件到YARN应用程序staging目录的工具类在往HDFS上传Flink作业所需的jar包或者配置文件。

final YarnApplicationFileUploader fileUploader =YarnApplicationFileUploader.from(stagingDirFs,stagingDirPath,providedLibDirs,appContext.getApplicationId(),getFileReplication());// The files need to be shipped and added to classpath.Set<Path> systemShipFiles = new HashSet<>(shipFiles)

所以基本可以断定,这个Flink作业在向HDFS写文件花了太多时间(5分钟)。那这个时间是正常的吗?我们找了一下此前启动这个任务的日志,发现当时这一步就快很多,一分多钟就完事了。

在这里插入图片描述

所以应该是HDFS变慢了,测试一下上传个文件看看:

在这里插入图片描述

发现传输一个23GB的文件需要10分钟左右。

再看下集群负载,都是正常范围以内,与此前持平,其他作业也无异常。

HDFS慢的原因可能和集群负载、集群小文件过多、网络、磁盘故障、namenode请求负载等等有关系。根据之前经验,太久没有重启集群HDFS也会变慢。因为排查集群各个方面都正常,所以计划使用重启大法 :)

再重启之后再尝试HDFS上传文件测试,发现明显快了很多了,同样一个23GB的文件现在只需要1分多钟。

在这里插入图片描述

本文的重点主要在于如何判断Flink作业卡住原因,如有错误,欢迎指正。

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

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

相关文章

【工具类】非 sudo 运行 docker

非 root 运行 docker 命令 sudo groupadd docker sudo usermod -aG docker $USER newgrp docker sudo chown root:docker /var/run/docker.sock sudo chown "$USER":"$USER" /home/"$USER"/.docker -R sudo chmod grwx "$HOME/.docker&quo…

【git 使用】git 中head、工作树、和索引分别是什么,有什么关系和区别

HEAD 定义&#xff1a;HEAD 是指向当前所在分支&#xff08;或者是某个特定的提交&#xff09;的指针&#xff0c;它表示当前工作目录正在处于哪个提交或分支上。作用&#xff1a;HEAD 指示了当前工作目录的状态&#xff0c;可以通过 HEAD 来确定当前处于哪个分支上&#xff0…

OkHttp Retrofit HttpClient之间的区别

OkHttp、Retrofit 和 HttpClient 是三个不同的 HTTP 客户端库&#xff0c;它们各自有不同的特点和用途。下面是它们之间的主要区别&#xff1a; 1. **OkHttp**&#xff1a; - OkHttp 是一个高性能的 HTTP 和 HTTP/2 客户端&#xff0c;由 Square 公司开发。 - 它…

【Java大数据期末】银行管理系统(MySQL数据库)

诚接C语言、C、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业&#xff0c; 标价10-20每份&#xff0c;如有需要请加文章最下方QQ。 本文资源&#xff1a;https://download.csdn.net/download/weixin_47040861/88850902https://download.csdn.net/download/weixin_4…

SpringBoot集成阿里云OSS、华为云OBS、七牛云、又拍云等上传案例【附白嫖方案】【附源码】

1. 项目背景 唉&#xff01;本文写起来都是泪点。不是刻意写的本文&#xff0c;主要是对日常用到的文件上传做了一个汇总总结&#xff0c;同时希望可以给用到的小伙伴带来一点帮助吧。 上传本地&#xff0c;这个就不水了&#xff0c;基本做技术的都用到过吧&#xff1b; 阿里…

osqp-eigen学习

OSQP文档学习 参考博客&#xff1a; &#xff08;1&#xff09;二次规划&#xff08;QP&#xff09;与OSQP求解器 &#xff08;2&#xff09;如何使用OSQP-Eigen osqp-eigen 1 osqp-eigen接口 以下列问题的求解为例&#xff1a; s.t. 1 ≤ x 1 ≤ 1.5 1≤x_1≤1.5 1≤x1​≤…

毕业设计:基于知识图谱的《红楼梦》人物关系可视化

文章目录 项目介绍部署步骤项目运行 项目介绍 github地址&#xff1a;https://github.com/chizhu/KGQA_HLM?tabreadme-ov-file 基于知识图谱的《红楼梦》人物关系可视化&#xff1a;应该是重庆邮电大学林智敏同学的毕业设计&#xff0c;在学习知识图谱的过程中参考使用。 文…

【开源软件的影响力有多大?】

开源软件的影响力有多大 开源软件的影响力 开源软件的影响力 开源软件对现代技术和发展有着巨大的影响&#xff0c;开源软件指的是那些发布时附带源代码的软件&#xff0c;它们通常允许用户自由地使用、研究、修改和分享软件。以下是一些开源软件影响力的关键方面&#xff1a;…

专修戴尔R730xd服务器闪电灯 心跳亮黄灯故障

2024年开年第二天接到一个用户反馈说他公司有一台DELL PowerEdge R730xd服务器春节前由于市电问题意外断电关机了&#xff0c;刚好碰上春节就没去开机了&#xff0c;今天工厂开工服务器通电发现开不了机&#xff0c;且机器过了一会后报了2个黄灯错误&#xff0c;如下图&#xf…

MFC按钮不响应或无法执行断点

这种情况一般都是资源ID问题导致的,按钮不响应,重新检查资源ID就可以,不要有重复的. 断点无法执行,VS可能异常重新修复一下就可以了. MFC自带字符分割函数, CString str _T(“123-ssd-ddaw-sfsfsf-sfsfser-ffffff”); CString outStr; ::AfxExtractSubString(outStr,str,0,‘…

proton.me邮箱

https://proton.me/ 我开发的chatgpt网站&#xff1a; https://chat.xutongbao.top/

软件代码写作要点

代码写得好不好,完全在于规划的好不好,那么流程图就显得十分的重要. 虽然大神都不用写流程图,对于复杂的流程,事前规划好流程图是必不可少的秘密. 流程图可以清晰的显示逻辑关系,以及逻辑是否有漏洞,简单清晰的流程图可以把复杂问题简单化,更有助于检测错误缺陷,对于代码技能…

从零学算法202

202.编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1&#x…

重铸安卓荣光——上传图片组件

痛点&#xff1a; 公司打算做安卓软件&#xff0c;最近在研究安卓&#xff0c;打算先绘制样式 研究发现安卓并不像前端有那么多组件库&#xff0c;甚至有些基础的组件都需要自己实现&#xff0c;记录一下自己实现的组件 成品展示 一个上传图片的组件 可以选择拍照或者从相册中…

75.SpringMVC的拦截器和过滤器有什么区别?执行顺序?

75.SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序&#xff1f; 区别 拦截器不依赖与servlet容器&#xff0c;过滤器依赖与servlet容器。拦截器只能对action请求(DispatcherServlet 映射的请求)起作用&#xff0c;而过滤器则可以对几乎所有的请求起作用。拦截器可…

【微服务安全】OpenID Connect 简介:现代应用程序的身份验证

OpenID Connect (OIDC) 是一个建立在 OAuth 2.0 之上的开放身份验证协议。它简化了应用程序以一种标准化和可互操作的方式验证用户身份并获取其基本个人资料信息的方式。可以将其视为应用程序“知道你是谁”的一种安全方式&#xff0c;而无需你创建单独的帐户或透露你的密码。 …

压缩感知——革新数据采集的科学魔法

引言&#xff1a; 在数字时代&#xff0c;数据以及数据的收集和处理无处不在。压缩感知(Compressed Sensing, CS)是一种新兴的数学框架&#xff0c;它挑战了我们传统上对数据采集和压缩的看法&#xff0c;给医学图像、天文观测、环境监测等领域带来了颠覆性的影响。但到底什么…

Java 爬虫 jvppeteer

开源地址&#xff1a;https://gitee.com/fanyong920/jvppeteer maven依赖&#xff1a; <!-- java爬虫 --><dependency><groupId>io.github.fanyong920</groupId><artifactId>jvppeteer</artifactId><version>1.1.3</version>…

Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

Leetcode日记 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 二叉树简介二叉树分类解题方法制作不易&#xff0c;感谢三连&#xff0c;谢谢啦 二叉树简介 二叉树&#xff08;Binary Tree&#xff09;是一种特殊的树形…

AUTOSAR AP——IDSM 入侵检测管理

什么是入侵检测系统管理器? 入侵检测系统(IDS)是一种安全控制,它检测并处理安全事件。入侵检测系统管理器(IdsM)是自适应平台架构中的一个功能集群,负责处理由安全传感器(自适应应用程序)报告的安全事件。 作为一个功能集群,IdsM包括一个向应用程序提供C++ API的库…