排查 Hive 任务导致磁盘写满的过程

news2024/9/21 0:33:35

计算的中间结果会写到 HDFS,如果用户写的SQL 有问题。如用户的 SQL 如下:
select * from A join B where a.dt=20230101 and b.dt=20230101,如 A 表 dt=20230101 分区 1000万行,B 表 dt=20230101 有 1万行记录。由于 SQL 没有关联条件,结果有1000亿行。

1.排查过程

1.1 先确定SQL queryId

hadoop fs -du -s -h /tmp/hive/*, 找到哪个用户的SQL 占用的多。
然后一级一级的查询。
如找到以下目录比较大

hdfs://bmr-master-479c2fa:8020/tmp/hive/hive/7809bfaf-c225-4c1d-bb58-1f8913f8a960/hive_2023-01-05_15-10-10_783_5535354154485458824-3

hive_2023-01-05_15-10-10_783可以确定这个 SQL 是 2023-01-05 15:10:10 提交的。

2. 根据用户执行的方式,找到对应的 SQL

2.1 jdbc 连接 hive-server 执行的方式

因为不知道连接的哪台 hive-server,所以需要到所有的 hive-server 上查询日志。

cd /mnt/bmr/log/hive

根据任务的时间确定哪个日志文件,当前日志文件为 hiveserver2.log。也有可能日志文件写到阈值,已经压缩为 hiveserver2.log.2023-01-05_${xxx}.gz,其中 KaTeX parse error: Expected group after '_' at position 64: ….log.2023-01-05_̲{xxx}.gz 文件里,拷贝到临时目录,使用 gunzip hiveserver2.log.2023-01-05_${xxx}.gz 进行解压。

根据 hive_2023-01-05_15-10-10_783_5535354154485458824-3,找到以下日志,SQL 为 “select count(1) from store_sales”.

2023-01-05T15:10:12,044 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Driver (:()) - Executing command(queryId=hive_20230105151010_fd576219-fae0-4a48-93bd-eda63a40e3bd): select count(1) from store_sales
2023-01-05T15:10:12,044 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Driver (:()) - Query ID = hive_20230105151010_fd576219-fae0-4a48-93bd-eda63a40e3bd
2023-01-05T15:10:12,044 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Driver (:()) - Total jobs = 1
2023-01-05T15:10:12,044 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Driver (:()) - Launching Job 1 out of 1
2023-01-05T15:10:12,044 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Driver (:()) - Starting task [Stage-1:MAPRED] in serial mode
2023-01-05T15:10:12,049 INFO  [HiveServer2-Background-Pool: Thread-451]: ql.Context (:()) - New scratch dir is hdfs://bmr-master-479c2fa:8020/tmp/hive/hive/7809bfaf-c225-4c1d-bb58-1f8913f8a960/hive_2023-01-05_15-10-10_783_5535354154485458824-3

2.2 以 hive-cli 的方式

以 hive 命令执行,则需要到执行的服务器。
cd /mnt/bmr/log/hive/hive
有可能在当前文件 hive.log,也有可能在 hive.log.2023-01-04_${xxx}.gz。和 hive-server 的查找方式一样。

2.3 不知道用户的执行方式,或者不知道在哪台服务器上以 hive 的命令执行

打开 ResourceManager 找到当时时间段执行的任务。如果找不到,则打开 timeline-server 找到当时时间段执行的所有任务。
在这里插入图片描述
query 对应的时间在开始时间和结束时间之间的 application 都需要查看。点开 application,进入以下界面。
在这里插入图片描述
点击 History,进入 tez-ui 界面。
在这里插入图片描述
点击 DAGs,进入以下页面。
在这里插入图片描述
每行都是一个SQL,点击Dag Name 下面的链接,进入页面如下:
最下面 “Additional Info from Hive” 部分,显示完整的 SQL,查看是否有问题。
在这里插入图片描述

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

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

相关文章

Druid 连接池技术的使用

文章目录官网链接连接性能消耗问题分析数据库连接池的作用市面常见连接池产品和对比国货之光druid连接池使用导入druid依赖硬编码方式(了解)软编码方式druid配置(了解)官网链接 http://www.apache-druid.cn/GettingStarted/chapter-1.html 连接性能消耗…

[Vue组件及组件之间的通信]一.Vue脚手架的使用;二.Vue的组件和组件之间的通信

目录 一.Vue脚手架的使用 1.通过命令行使用vue-cli的指令创建:vue init webpack 项目名称 2使用webStorm软件:本质仍然使用vue脚手架 3.使用vue ui创建:vue提供的图形化的操作界面 二.Vue的组件和组件之间的通信 1.组件:是vu…

数字签名与签名验证过程

1.1 生成数字签名 1 利用RSA算法生成公钥、私钥。私钥由密钥持有者自主保存,公钥可对外发布。 2 准备好待签名的文档。 3 利用哈希算法(HASH),生成待签名文档的摘要。(文档摘要) 4 利用签名者的私钥&am…

谷粒学院——第十八章、统计分析

准备工作 需求分析 1、统计在线教育项目中,每一天有多少注册人数 2、把统计出来的注册人数,使用图表显示出来 创建数据库表 创建工程 service_statistics 配置文件 # 服务端口 server.port8008# 服务名 spring.application.nameservice-statistic…

Python基础(二十一):面向对象深入了解

文章目录 面向对象深入了解 一、魔法方法 1、__init__() 2、__str__() 3、__del__()

数据结构入门——二叉树(C语言实现)

数据结构入门——二叉树一. 树概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用二. 二叉树概念及结构2.1 二叉树的概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构三. 二叉树的顺序结构及其实现(堆的实现)3.1 二叉树的顺序结构3.2 堆的实现(以大堆为…

要想宝宝吃得好,粮仓就要保护好,做好3点保护粮仓,防止皲裂

众所周知,母乳喂养的妈妈并不容易,因为母乳喂养也有很多“难题”,也会很痛,比如开奶痛、挂奶、堵奶等,疼痛的程度不亚于子宫收缩。还有一个,牛奶,牛奶。.头皲裂的时候,真的是含泪喂奶…

Python实现可视化大屏数据

参考网址如下: 【Python】全网最新最全Pyecharts可视化教程(三):制作多个子图_51CTO博客_python数据可视化pyecharts使用pyecharts拖拉,拽,创建大屏展示 - 简书 (jianshu.com) 智慧大屏是如何实现数据可视化的? - 知…

调查问卷考试问卷创建生成工具助手小程序开发

调查问卷考试问卷创建生成工具助手小程序开发 问卷调查考试软件,可以自由让每一个用户自由发起调查问卷、考试问卷。发布的问卷允许控制问卷的搜集、回答等各个环节的设置,同时支持系统模板问卷,选用模板问卷后可以一键创建属于自己的问卷&a…

JVM基础知识总结

日常工作中接触到的jvm相关的知识,和jvm相关书籍中汇总总结一下jvm相关基础知识,作为对jvm的了解。 文章目录jvm运行时数据区域程序计数器java虚拟机栈堆heap非堆内存 nonheap方法区直接内存 Direct Memory类加载机制类的加载过程类加载器加载过程的详细…

阿里云网络解决方案架构师任江波:全球一张网,支撑游戏业务高效互联

2022 年 8 月 30 日,阿里云用户组(AUG)第 9 期活动在北京举办。活动现场,阿里云网络解决方案架构师任江波,向参会企业代表分享了全球一张网,支撑游戏业务高效互联。本文根据演讲内容整理而成。 在座的很多我…

Web3中文|年度回顾:2022年Web3的发展情况

老生常谈的话题都有一个共同点,那就是它总是包含着一些无趣但至关重要的真理。例如,众所皆知天空是蓝色的,所以大家并不会把它纳入日常讨论,但这并不代表它对物理学、生物学和其他学科而言没有价值。 当我们回望2022年的Web3领域…

docker 部署maven服务器,并将代码发布到maven服务器,并kie-server关联

书接上文 已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来busines…

推荐系统入门学习(一)【小白入门系列】

推荐系统入门学习(一) 前言:本博客不会采取大量的难懂的语言来介绍推荐系统,只会用一些简单的方式来介绍推荐系统,祝学习愉快! 1、推荐系统的概念 简单的说,推荐系统则是将产品推荐给用户的一…

判断点在多边形内部

一、问题描述已知点P(x,y)和多边形polygon,判断点P(x,y)是否在多边形内部。二、解决方案射线法以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外部。考虑沿着L从无究远处开始自左向右移动&#xff0c…

Android 更改鼠标样式

定义风格 鼠标风格定义位置&#xff1a;\frameworks\base\core\res\res\values\styles.xml 系统定义了两套鼠标的风格&#xff0c;一套是默认&#xff0c;一套是放大的图标的风格&#xff0c;在下面增加自己的鼠标风格图标 <style name"BluePointer"><ite…

Springboot Controller接口默认自动填充 业务实体参数值

前言 今天看有小伙伴求救&#xff1a; 我还是一贯如此&#xff0c; 有人不明白&#xff0c;没玩过HandlerMethodArgumentResolver 。 那么很可能不止他一个人&#xff0c; 那么我就有必要出手。 不多说&#xff0c;开搞。 正文 快速模拟出这个使用场景 &#xff1a; 假如有好多…

Allegro174版本新功能介绍之动态铜皮Fast模式设置

Allegro174版本新功能介绍之动态铜皮Fast模式设置 Allegro升级到了174版本后,相比于172版本把动态铜皮的FAST模式优化的更为到位,据介绍,铜皮smooth的时间可以缩短非常多,尤其是针对于数据量非常大PCB,效率提升不少,但是在出生产文件的时候,铜皮还是必须Smooth,见下面o…

Odoo 16 企业版手册 - 库存管理之作业类型

作业类型 Odoo库存模块是有效管理所有类型库存操作的最佳选择。为公司的库存管理提供适当的支持对于完美地运营业务至关重要。当我们谈论Odoo是库存管理的完美解决方案时&#xff0c;您会好奇它提供的功能。在本节中&#xff0c;我们将使用专用库存模块详细介绍Odoo管理的库存操…

Vue(七) 生命周期和组件(一)

目录 1. 生命周期 1.1 引出生命周期 1.2 生命周期——挂载流程 1.3 生命周期——更新流程 1.4 生命周期——销毁流程 1.5 总结 2. 非单文件组件 2.1 对组建的理解 2.2 非单文件组件 2.3 组件的注意点 2.4 组件的嵌套 2.5 VueComponent构造函数 1. 生命周期 生命周期…