性能分析排查思路之日志(1)
本文是性能问题分析排查思路的展开内容之一,主要分为日志1期,机器4期、环境2期共7篇系列文章,本期是第一篇,讲日志的分析方法和经验。
系列文章传送门:
一图梳理性能问题分析排查思路-总体概述(0)

一般分析步骤
大数据领域,日志的范畴很广泛,主要思路如下:

-
收集相关日志:
- 任务日志:对于运行在YARN等分布式计算框架上的任务,首先要获取任务执行过程中的标准输出(stdout)和标准错误(stderr)日志,这些日志可能包含了任务启动、运行、失败的具体信息,包括错误栈、资源分配状况、任务进度等。
关键在于找到第一现场,最后的错误往往是由更早的错误引发的!
- 服务日志:针对具体的大数据服务组件,如HDFS NameNode、DataNode、YARN ResourceManager、NodeManager、Kafka Broker、HBase RegionServer等,收集其运行时的日志文件,这些日志记录了服务内部状态变化、请求处理情况、异常事件等重要信息。
错误不一定发生在每一个节点上,如不能定位到节点,分布式的服务需要关注每一个节点的信息。
- 上下游服务日志:如果问题涉及到多个服务之间的交互,例如数据流经Elasticsearch、Flink、Kafka等中间件,也需要查看这些上游和下游服务的相关日志,以便确定数据传输是否正常、是否存在接口调用失败或超时等问题。
这招很管用!
-
筛选关键信息:
- 使用grep、awk等命令行工具或日志管理平台进行关键词过滤和搜索,快速定位到包含错误信息或异常堆栈的部分。
- 查看日志中与时间戳相关的条目,找到问题发生的时间窗口内的日志记录(以便回溯对应时间段的硬件资源状态)。
-
关联分析:
- 将不同来源的日志按时间顺序排列,观察同一时间段内各服务的状态和交互情况。
- 分析错误前后的上下文信息,寻找可能导致问题的触发因素,如资源耗尽、并发冲突、配置错误等。
-
深度解析:
- 对于复杂的系统错误或性能瓶颈,可能需要深入理解日志中所反映出的系统内部机制,比如内存溢出、磁盘空间不足、网络延迟高等问题(这在机器相关章节展开)。
- 如果是代码级别的错误,通过错误栈跟踪查找引发问题的具体代码行,结合源码进一步分析(在环境章节展开讲)。
-
重现与调试:
- 在条件允许的情况下,尝试复现问题并开启额外的日志级别(debug或trace级别),以获取更详细的运行时信息。
- 如果有必要,可以通过远程调试或者增加临时日志输出来追踪特定变量的变化或流程控制路径。
不能重现的问题往往是没有找到根因!
常见的错误类型
HDFS与YARN类
| 组件 | 错误关键词 | 解释说明 |
|---|---|---|
| Hadoop | namenode.SafeModeException | 安全模式下无法操作 |
| Hadoop | ConnectException: Call From datanode-host | DataNode连接失败 |
| YARN | ConnectException:Failed to connect to server | ResourceManager无法启动或连接失败 |
| YARN | Failed to launch container … ExitCode xx is -104 | 容器初始化失败 |
| YARN | FileAlreadyExistsException | 输出目录已存在等 |
| Hadoop | RemoteException: StandbyException … | HA模式下Active NameNode变更 |
| Hadoop | UnknownHostException: namenode-host | NameNode服务未响应或不可达 |
| Hadoop | sasl.SaslException: GSS initiate failed | Kerberos认证失败 |
| YARN | OutOfMemoryError: Java heap space | Map或Reduce任务内存溢出 |
| Hadoop | IOException: Failed to handshake with NN | DataNode与NameNode之间通信失败 |
Hive和HBase类
| 组件 | 错误关键词 | 解释说明 |
|---|---|---|
| Hive | FAILED: MetaException(message:Got | 元数据比如表或分区创建、删除、更新等操作失败 |
| Hive | FAILED: ParseException line x:xx | SQL语句解析错误,如语法不符合规范 |
| Hive | SemanticException [Error 10001]: Line xx | SQL语句虽符合语法,但在执行计划生成阶段出现语义错误 |
| Hive | HiveExecutionException Error while processing | 在查询执行过程中发生的异常 |
| Hive | .FileNotFoundException: File does not exist | 与HDFS相关的读写错误,如文件不存在、权限不足 |
| Hive | DAG submission failed due to | Tez作为执行引擎时,由于资源不足等导致失败 |
| Hive | hive.serde2.SerDeException: | 在序列化或反序列化数据时遇到的问题 |
| HBase | ZooKeeperConnectionException: HBase is unable to connect | ZK连接异常 |
| HBase | IllegalArgumentException: KeyValue size too large | RowKey过大错误 |
| HBase | Lease expired on client… for table … | RegionServer租约过期错误 |
Spark类
| 组件 | 错误关键词 | 解释 |
|---|---|---|
| Spark | OutOfMemoryError: Java heap space | 内存溢出 |
| Spark | NoClassDefFoundError, ClassNotFoundException | 依赖库缺失或版本冲突 |
| Spark | SocketTimeoutException: Read timed out | 网络通信错误 |
| Spark | FetchFailedException: Connection from | Spark Shuffle错误 |
| Spark | sql.AnalysisException:Table or view not found | 表或视图不存在,或者SQL语句语法有误 |
| Spark | YarnAllocationException | 向YARN资源管理器申请资源失败 |
日志处理的常用命令
基础类:cat + grep关键字,less、more、tail
统计类:wc统计行数、字符数
管道类:awk配合grep
tail -n 1000 /var/log/hadoop/xxxx.log | grep "Error" | awk '{print $1, $4}' > errors.txt
工具类:split将很大的日志文件切分成小文件,zip或tar压缩!
相关文章:
性能分析排查思路之日志(1)
本文是性能问题分析排查思路的展开内容之一,主要分为日志1期,机器4期、环境2期共7篇系列文章,本期是第一篇,讲日志的分析方法和经验。 系列文章传送门: 一图梳理性能问题分析排查思路-总体概述(0ÿ…...
Vue中如何实现条件渲染?
在Vue中实现条件渲染非常简单且灵活,主要通过Vue的指令来实现。在Vue中,我们可以使用v-if和v-else指令来根据条件来渲染不同的内容。下面就让我们通过一个简单的示例来演示如何在Vue中实现条件渲染: <!DOCTYPE html> <html lang&qu…...
Postman上传文件的操作方法
前言 调用某个接口,测试上传文件功能。一时间不知如何上传文件,本文做个操作记录,期望与你有益。 步骤一、设置Headers key:Content-Type value:multipart/form-data 步骤二、设置Body 选择form-data key:file下拉框选择file类型value&…...
linux系统Jenkins工具介绍
Jenkins概念介绍 Jenkins概念Jenkins目的特性产品发布流程 Jenkins概念 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些…...
【python】遵守 robots.txt 规则的数据爬虫程序
程序1 编写一个遵守 robots.txt 规则的数据爬虫程序涉及到多个步骤,包括请求网页、解析 robots.txt 文件、扫描网页内容、存储数据以及处理异常。由于编程语言众多,且每种语言编写爬虫程序的方式可能有所不同,以下将使用 Python 语言举例&am…...
使用爬虫去获取四六级成绩
使用爬虫去获取四六级成绩 今天出成绩,没过,二战六级依然惨死,那么我就写一个简单的爬虫,其实也可以封装成一个接口的,然后直接输入姓名 身份证好 以及四六级即可获取成绩,我就是简单的玩了一下哈…...
洛谷P1256 显示图像
广搜练手题 题目链接 思路 打印每个数与其最近的 1 1 1的曼哈顿距离,显然广搜,存储每一个 1 1 1,针对每一个 1 1 1开始广搜,逐层更新,每轮后更新的为两轮之中的最小曼哈顿距离 ACcode #include<bits/stdc.h>…...
模拟器抓HTTP/S的包时如何绕过单向证书校验(XP框架)
模拟器抓HTTP/S的包时如何绕过单向证书校验(XP框架) 逍遥模拟器无法激活XP框架来绕过单向的证书校验,如下图: 解决办法: 安装JustMePlush.apk安装Just Trust Me.apk安装RE管理器.apk安装Xposedinstaller_逍遥64位…...
【JS 算法题: 将 json 转换为字符串】
题目简介 其实就是手撕 JSON.stringfy()。 算法实现 输入 原则上来说,输入的是一个 json 对象。但需要考虑到异常情况,即输入了其它类型的数据,比如:12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。 输出 …...
数的范围 刷题笔记
思路 寻找第一个大于等于目标的 数 因为该数组是升序的 所以 我们可以采用二分的方式 逼近答案 定义一个左指针和一个右指针 当左右指针重合时 就是我们要找的答案 当我们寻找第一个大于等于x的数时 a[mid]>x,答案在mid处 或者在mid的左边 因此让rmid继续逼近 如果…...
XSS简介及xsslabs第一关
XSS被称为跨站脚本攻击(Cross-site scripting),由于和CSS(CascadingStyle Sheets)重名,所以改为XSS。 XSS主要速于javascript语言完成恶意的攻击行为,因为javascript可非常灵活的操作html、css和浏览器 XSS就是指通过利用网页开发时留下的漏…...
构建安全的REST API:OAuth2和JWT实践
引言 大家好,我是小黑,小黑在这里跟咱们聊聊,为什么REST API这么重要,同时,为何OAuth2和JWT在构建安全的REST API中扮演着不可或缺的角色。 想象一下,咱们每天都在使用的社交媒体、在线购物、银行服务等等…...
从0开始学习NEON(1)
1、前言 在上个博客中对NEON有了基础的了解,本文将针对一个图像下采样的例子对NEON进行学习。 学习链接:CPU优化技术 - NEON 开发进阶 上文链接:https://blog.csdn.net/weixin_42108183/article/details/136412104 2、第一个例子 现在有一张图片,需…...
(二十三)Flask之高频面试点
目录: 每篇前言:Q1:为什么把request和session放在一起?Q2:Local对象的作用?Q3::LocalStack对象的作用?Q4:一个运行中的Flask应用程序分别包括几个Local/LocalStack&#…...
设计模式(十三)抽象工厂模式
请直接看原文:设计模式(十三)抽象工厂模式_抽象工厂模式告诉我们,要针对接口而不是实现进行设计。( )-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- …...
HTTP Cookie 你了解多少?
Cookie是什么? 先给大家举个例子,F12 打开浏览器的页面之后,我们能在 Response Headers 的字段里面看到一个header 叫做 Set-Cookie,如下所示 图中包含的 Set-Cookie 为 Set-Cookie:uuid_tt_dd10_20293537580-1709432565344-232…...
【QT+QGIS跨平台编译】之五十六:【QGIS_CORE跨平台编译】—【qgsmeshcalclexer.cpp生成】
文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…...
ar时间序列
AR时间序列模型(AutoRegressive Time Series Model)是一种用于分析和预测时间序列数据的统计模型。该模型假设未来的观测值与过去的观测值相关,且该相关性可以通过线性回归来描述。 AR模型的基本思想是将当前时刻的观测值表示为过去几个时刻的…...
Android 14 AAOS audio
文章目录 乘客音频投放到主音频区动态路由配置controlhal实现的具体流程control hal AudioGain的callbackAudioModuleChange变化的通知 乘客音频投放到主音频区 场景: 是将乘客区的Media 属性的数据通过主屏区的设备进行播放。具体而言 在副屏user11播放的音乐是输出…...
文心一言 VS 讯飞星火 VS chatgpt (207)-- 算法导论15.4 4题
四、说明如何只使用表 c 中 2*min(m,n) 个表项及O(1)的额外空间来计算LCS的长度。然后说明如何只用 min(m,n) 个表项及O(1)的额外空间完成相同的工作。要写代码的时候,请用go语言。 文心一言: 在只使用 2 * min(m, n) 个表项和 …...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
