记一次低级且重大的Presto运维事故

news2024/11/15 4:39:46

本文纯属虚构,旨在提醒各位别犯类似低级错误。
如有雷同,说的就是你!


文章目录

    • 前言
    • 事件回顾
    • 后续
    • 总结

前言

首先,要重视运维工作和离职人员的交接工作,这个不必多说。一将无能,累死三军!
接下来,我尽可能根据操作记录、配置文件备份和聊天记录,还原这长达两个多月的运维事故。但毕竟我也只是个用户,很多细节内幕并不清楚,部分内容会进行“艺术”加工,但一些明显低级的错误行为,大家应该也能感觉出来,希望各位以此为戒。

事件回顾

图1 Presto配置文件修改备份记录
在这里插入图片描述
图2 Presto用户操作该配置文件记录
在这里插入图片描述
根据图1和图2可以看出以下问题,一是该配置文件修改非常频繁,二是很多修改并没有留下备份,三是不止使用Presto用户操作过该文件,因为有些备份和操作时间对不上。
图3 resource_groups.json.bak
在这里插入图片描述
这是2023年10月30日的备份文件配置,bi队列并行任务限制是60,最大排队数是20。备份的是修改之前配置,这和群里聊天记录也能对上,见下。
*2023年10月30日 09:22,有用户反馈很多任务失败,日志报错:
Too many queued queries for “global.bi”
刚接手运维同事 2023年10月30日 10:37 回复
已经找到问题原因,今晚我们会调整 global.bi 资源组的参数,确保满足高峰查询使用
之前我没有过多关注这句话,今天再看到的时候恍然大悟,从2023年10月30日起,他们就已经走错路了。bi队列的用户,不止我们数据部门批任务和即席查询用,dolphinscheduler上的租户没有几个,全公司的批任务大部分也会选择bi队列的用户作为租户使用。而刚接手的运维同事,将bi队列并行任务数限制从60一路降到15,导致大量任务堆积,进而导致了2023年11月后大量用户反馈Presto慢、不能用。
图4 resource_groups.json.bak.231220
在这里插入图片描述
这是2023年12月20日的备份文件配置,bi队列并行任务限制从60降到20,最大排队数从20涨到45。因为2023年10月30日至2023年12月20日之间修改配置并没有留备份,无法确定哪天修改,可以确定的是2023年12月20日前就已经改成20了。但bi队列是全公司用的最多的队列,竟然被他们拍脑门限制为20,生产集群改的如此随意。更可笑的是,某位人才把问题推给用户写的代码太烂,把用户当傻子,进一步激化矛盾。退一万步讲,写的烂也是一直都烂,集群正常运行多年,任务也正常运行多年,你就没意识到自己最近改了什么东西?另外还有人才归到了即席查询和批处理不能同时使用,同时使用这么多年,你一接手就不能用了是吧?还有任务变多、小文件过多等等借口。
图5 resource_groups.json.bak.20240112
在这里插入图片描述
这是2024年1月12日的备份文件配置,bi队列并行任务限制从最开始60降到15,最大排队数从45涨到75。2024年1月12日的备份是2024年1月8日至2024年1月12日的配置。

后续

在领导英明领导下,我们于2024年1月6日进行了小文件归档操作,截至2024年1月16日,清理了五千万小文件。

hadoop archive -Dmapred.job.queue.name=xxx -archiveName xxx.har -p 

Presto成功的从上午不能用,变成了下午也不能用。写个select 1 都要运行(排队)二十分钟。当然,这和清理小文件无关,某个人才于2024-01-08 21:26:39将bi队列并行任务限制改为15。
在这里插入图片描述
好在他们做对了一件事,2024年1月6日不光清理小文件,还新搭了14个节点的集群。当用户反馈不能用时,让他们使用新集群,成功实现了分流。但是dolphinscheduler上还有大量的任务使用老集群,15的限制还是导致任务积压、排队,问题还是没有解决。
我不是运维人员,一直知道他们改了配置,但不知道他们这么瞎改。了解这一切,是我在2024年1月18日偶然发现一个事,当单个任务实时内存使用超过150GB就会失败。
在这里插入图片描述
而老集群31个节点,单节点256GB,31*256=7936GB,单任务限制最大150GB。当时同时执行的只有19个任务,其它都在排队,就算都是顶格150GB,剩下还有大量资源。
在这里插入图片描述
于是我把这情况反馈到群里,领导@几个运维让回答一下,至今没有任何回复。
虽然没有回答,但他们晚上把限制提高到了20,与此同时,还更换了故障节点(存疑),降低了NameNode 堆内存等。2024年1月19日,Presto老集群突然正常了,但由于他们同时修改较多,且只是把限制从15提高到20,无法确定根源。但有一点可以确定,bi队列限制为15,甚至20都极不合理,大量资源闲置,人为制造排队。从上图可以看出,当时bi队列限制为15,其它队列加一起才19-15=4个任务,bi队列73个排队!

总结

从2023年10月30日到现在,两个多月时间,老Presto集群基本处于上午不能用的状态,甚至后来下午也不能用。不可否认,运维做了一些有效的工作,但如果一开始用户反馈排队过多,只是因为部分节点挂掉,甚至真的因为任务突然增多了,运维去增加节点(从后来搭建14个节点新集群来看,并不是没有服务器),而不是瞎改配置,结果会不会不一样?如果运维修改生产环境配置文件不那么随意、频繁,而是先统计bi队列每天总任务数、并行任务数,根据实际情况调整限制和错开任务执行时间,结果会不会不一样?
很多事宜通不宜堵,有些人什么时候才能明白。
祝愿大家远离低级的人和事。

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

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

相关文章

Xilinx MicroBlaze 告警提示解决方案

告警: [BD 41-2559] AXI interface port /M02_AXI_0 is not associated to any clock port. It may not work correctly. Please update ASSOCIATED_BUSIF parameter of a clock port to include this interface port in an external clock port. If no external cl…

Java 设计者模式以及与Spring关系(五) 策略和观察者模式

目录 简介: 23设计者模式以及重点模式 策略模式(Strategy Pattern) 示例 spring中应用 观察者模式(Observer) 示例 spring中应用 简介: 本文是个系列一次会出两个设计者模式作用,如果有关联就三个,…

一键去除图片背景——background-removal-js

一些JavaScript库和工具可以帮助实现背景去除: OpenCV.js:OpenCV的JavaScript版本,提供了许多计算机视觉功能,包括背景去除。Jimp:一个用于处理图像的JavaScript库,提供了许多图像处理功能,包括…

Vue.js 3 项目开发:迈向现代化前端开发的必经之路

文章目录 一、Vue.js 3简介二、Vue.js 3新特性1. Composition API2. 更好的性能3. 更好的TypeScript支持4. 更多的生命周期钩子5. 更好的自定义指令API 三、Vue.js 3项目开发实践1. 搭建开发环境2. 项目结构规划3. 组件开发4. 路由管理5. 状态管理6. 测试与部署 《Vue.js 3企业…

VSCode Python Windows环境下创建虚拟环境,隔离每个项目的依赖pip包,推荐使用!

VSCode Python Windows环境下创建虚拟环境 Visual Studio Code 可以隔离不同项目的pip依赖包,防止不同版本的干扰**(推荐使用)** 先在python官网https://www.python.org/downloads/下载需要的python版本(我选择了3.9.8&#xff09…

基于springboot+vue新能源汽车充电管理系统

摘要 新能源汽车充电管理系统是基于Spring Boot和Vue.js技术栈构建的一款先进而高效的系统,旨在满足不断增长的新能源汽车市场对充电服务的需求。该系统通过整合前后端技术,实现了用户注册、充电桩管理、充电订单管理等核心功能,为用户提供便…

centos 7 增加临时路由及永久路由

centos 7 增加临时路由及永久路由 如果增加临时路由,要先安装net-tools , sudo yum install net-tools route add -net 10.1.0.0 gw 10.1.1.1 netmask 255.255.0.0 意思是增加了一条动态路由,网关10.1.1.1 ,10.1.x.x 的所有ip都走这个网关 此种方式&am…

Wireshark的捕获接口设置

通过Wireshark菜单栏的“捕获”-“选项”和工具栏的“捕获选项”按钮,可以进入接口捕获接口的设置。 打开捕获接口设置界面,首先设置“Input”标签。 进行接口选择,关掉不必要的接口。 选择使用接口模式,选择“混杂模式”&#x…

proxy 代理的接口报错301问题

项目系统里仅仅这个接口报错,反向代理错误导致。 默认情况下,不接受运行在HTTPS上,且使用了无效证书的后端服务器。如果你想要接受,修改配置:secure: false(简单意思:如果本地没有进行过https相…

PaddleNLP 如何打包成Windows环境可执行的exe?

当我们使用paddleNLP完成业务开发后,需要将PaddleNLP打包成在Windows操作系统上可执行的exe程序。操作流程: 1.环境准备: python环境:3.7.4 2.安装Pyinstaller pip install pyinstaller 3.目录结构,main.py为可执…

Jmeter 设置全局请求 重点cook

原因 在使用jmeter 过程中为了方便 ,会设置很多公众信心 比如请求头 请求cook 还会设置多个线程组 在同一个线程组中 我们只需要设置一个请求请求cook 就可以了 但是 有逆骨 就是喜欢多个线程组所以出现问题了 解决方案 设置一个全局变量 步骤 在测试计划中设…

正点原子RV1126编译环境搭建+rkmedia编译

备注: 1)如果想成功编译rkmedia可执行程序,必须一步不差的这么操作。 1.编译环境搭建 1.1设置ubuntu 1)右上角 设置->系统设置->软件和更新->下载自(“选择阿里云”) 2)提交之后…

LabVIEW电路板插件焊点自动检测系统

LabVIEW电路板插件焊点自动检测系统 介绍了电路板插件焊点的自动检测装置设计。项目的核心是使用LabVIEW软件,开发出一个能够自动检测电路板上桥接、虚焊、漏焊和多锡等焊点缺陷的系统。 系统包括成像单元、机械传动单元和软件处理单元。首先,利用工业相…

《WebKit 技术内幕》之十一(2):多媒体

2 视频 2.1 HTML5视频 在HTML5规范定义中,Web开发者可以使用“video”元素来播放视频资源。视频中有个重要的问题就是视频编码格式,对此,目前标准中包含了三种编码格式,它们分别是Ogg、MPEG4和WebM。其中Ogg是由Xiph.org组织开…

分布式一致性算法---Raft初探

读Raft论文也有一段时间了,但是自己总是以目前并没有完全掌握为由拖着这篇博客。今天先以目前的理解程度(做了6.824的lab2A和lab2B)对这篇论文做一个初步总结,之后有了更深入的理解之后再进行迭代,关于本文有任何疑问欢…

20240122在WIN10+GTX1080下使用字幕小工具V1.2的使用总结(whisper)

20240122在WIN10GTX1080下使用字幕小工具V1.2的使用总结 2024/1/22 19:52 结论:这个软件如果是习作,可以打101分,功能都实现了。 如果作为商业软件/共享软件,在易用性等方面,可能就只能有70分了。 【百分制】 可选的改…

推荐IDEA一个小插件,实用性很高!!

插件: Convert YAML and Properties File 由于每个人的开发习惯不同,在开发过程中会遇到各种小细节的问题。今天给大家介绍一个小插件,作用不大,细节很足。 就是properties类型文件和yml文件互相自由转换 解决:…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--机器人、强化学习

专属领域论文订阅 VX 扫吗关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有帮助可以扫吗关注,每日准时为你推送最新论文 分类: 大语言模型LLM视觉模型VLM扩散模型视觉导航…

Maven 打包时,依赖配置正确,但是类引入出现错误,一般是快照(Snapshot)依赖拉取策略问题

问题描述: 项目打包时,类缺少依赖,操作 pom.xml -> Maven -> Reload project ,还是不生效,但是同事(别人)那里正常。 问题出现的环境: 可能项目是多模块项目,结构…

快速上手MyBatis Plus:简化CRUD操作,提高开发效率!

MyBatisPlus 1,MyBatisPlus入门案例与简介1.1 入门案例步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤3:勾选配置使用技术步骤4:pom.xml补全依赖步骤5:添加MP的相关配置信息步骤6:根据数据库表创建实体类步骤7:创建Dao接口步骤8:编写引导类步骤9:编写测试类 1.2…