大数据平台中元数据库—MySQL的异常故障解决

本文的主要目标是解决大数据平台中元数据库MySQL的异常故障。通过分析应用响应缓慢的问题,找到了集群组件HIVE和元数据库MySQL的原因。通过日志分析、工具检测和专家指导等一系列方法, 最终确定问题的根源是大数据集群中租户的不规范使用所导致,并逐步解决了这个问题。本文将详细描述故障的定位和解决思路,希望通过案例分析能为遇到类似问题的同行提供参考。

本文来自twt社区专业委员会的课题研究

一、故障背景

营销人员在应用端进行目标客户群建设的时候,发现有很大延迟。经过反馈、初步的查实定位,发现是后端调用大数据集群服务的时候,出现了没有返回的情况。这个情况导致后续的住户画像、上传集团、报数以及多个需要提醒目标客户的应用延迟。甚至引起了部分专业分公司的投诉。

二、故障解决思路

1、故障定位:

HIVE 组件的问题分两类:

1.hivemetastore

通过集群的监控页面或者hivemetastore的日志分析查看hivemetastore的并发数量等参数的限制问题

2.hiveserver2

1)咨询查看是不是最近有新增加的任务,通过分析看看不是有异常的SQL语句等程序;

2)通过集群的监控页面或者hiveserver2的日志分析,查看是不是存在参数的问题;

3)审计分析hive的 元数据库 表,是不是存在大量的分区表或者大的全表扫描的表等需要重点关注的审计表等信息

2、故障解决:

既然已经知道是hive组件导致的MySQL元数据库的问题,建议从以下方面着手:

1.从hive组件着手

a.检查是不是最近有新上的任务,没有经过代码审计或者SQL写的不规范的任务,占用资源过多,从而导致集群响应缓慢;

b.检查hiveserver2和hivemetastore的参数,分析其日志,看看是不是由于参数问题导致的集群组件缓慢;

2.从MySQL数据库着手

a.检查MySQL服务器的硬件资源情况,查看CPU、内存、IO、网卡等信息,看看是不是存在使用率过高的情况;

b.对hive的元数据库进行盘点分析,看看是不是有长连接或者占用资源很大的SQL语句运行,从而导致数据库缓慢;

3.从YARN组件着手

a)查看租户队列资源的分配是否合理;

b)检查是否存在有大量的状态不正常的任务。

3、案例说明:

1.如何发现MySQL的元数据库异常故障问题

1)5月6日18点30分,运维人员发现创建目标客户群任务延迟;经过查实,集群响应效率缓慢导致任务延迟;

2)5月6日19点到23点40分,经过分析spark日志、hiveserver日志,NameNode日志,hivemetastore日志,均未发现异常。在CM监控页面,集群巡检各项指标均未发现异常;

3)5月6日23点55分,运维人员发现mysql的元数据库长连接会话较多,且Innod锁数量持续增加未释放;

4)5月7日0点3分,运维人员请求基保部同事协助定位原因,发现是元数据库(MySQL)中存在大数据租户的多个长连接,影响数据库的性能,进而影响集群任务的提交响应效率;经过查实,长连接会话及未释放的Innod锁是由租户user_yddsj(大数据租户)的任务发起;

5)5月7日0点12分,运维人员电话通知大数据租户厂家进行清理;并邮件通知局方协助,要求大数据租户厂家对长连接会话进行清理;

6)5月7日 0点30分,同步邀请H公司大数据产品线专家协助处理,经过大数据产品线专家远程分析,初步定位原因为metastore的并发数量不够,把metastore的并发数量进行源码级别的调整(增大并发数量),在测试环境经过多次部署、调测、验证后,于5月7日20点30分发布到正式环境,21点30分完成了hivemetastore的服务重启。重启后,集群能力恢复正常。但是经过跟踪监测,集群服务性能在23点45分左右持续下降,排除了hivemetastore的并发数量的影响,并于当晚邀请专家次日到现场进行支撑。

7)5月8日8点10分,H公司多位专家到达湖南电信现场,携手定位故障原因,集成专家发现MySQL数据库主机IO占用持续达到99%;

8)5月8日8点30分,通过MySQL专家定位,确认是5月7日发现的长连接会话及未释放的Innod锁仍未释放,这些会话指向的目标表为user_yddsj.volte_mw,经过查询元数据信息,此表有2万多个分区,且租户的执行程序存在全表扫描的情况。导致MySQL数据库主机IO占用持续高水位;

9)5月8日11点19分,运维人员协同局方负责人,通知大数据租户对表user_yddsj.volte_mw进行分区清理。经过局方负责人与大数据租户确认,为尽快恢复集群的服务正常,决定先停止大数据租户的集群服务,且停止其应用程序;

10)5月8日11点40分,大数据租户开始清理user_yddsj.volte_mw表分区。于12点30分收到大数据租户表分区清理完成的通知;

11)5月8日13点30分,运维人员经过一个多小时的观察,集群的服务响应和性能都已经恢复正常。访问元数据库效率恢复正常。

图片

图1:基础保障部同事协助定位长连接问题

图片

图2-1:长连接相关语句,对应用户为大数据开放的租户

图片

图2-2:长连接相关语句,对应用户为大数据开放的租户

图片

图2-3:长连接相关语句,对应用户为大数据开放的租户

图片

图3:5月8日MySQL数据库主机IO高水位

图片

图4-1:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-2:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-3:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-4:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-5:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-6:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-7:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图4-8:5月8日MySQL数据库长连接语句,定位大数据租户表user_yddsj.volte_mw存在2万多个表分区

图片

图5:5月8日定位大数据租户执行程序全表扫描问题

图片

图6:5月8日13点30分 经过一个多小时的观察,集群的服务恢复正常。

三、故障总结

1、问题解决

临时措施:

1)清理表分区,将元数据库MySQL的压力释放;

永久措施:

1)重新评估构建表,将表设计重新建设,特别是分区的设定;

2)将表的清理规则进行设置,防止出现类似情况。

2、总结归纳

1)大数据租户仅清理了HDFS文件,未清理HIVE表分区信息;

2)大数据租户执行程序存在MySQL全表扫描情况;

3)大数据平台租户应用程序上线未纳入租户管理规范

4)大数据平台集群表分区元数据缺少监控。

四、避免问题出现的优化

如何设计执行MySQL的元数据库异常故障问题整改计划 ( 限定完成时间:略 )

1)大数据租户及时清理HIVE表分区信息,配置自动清理脚本;

2)大数据租户对执行程序进行调整,完成volte_mw表分区改造,设计为大分区+小分区;完成执行程序的改造;

3)大数据平台将租户应用程序上线纳入租户管理规范;

4)大数据平台将新增集群表分区元数据监控。

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

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

相关文章

Linux学习之iptables过滤规则的使用

cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810,uname -r看到内核版本是3.10.0-957.el7.x86_64,iptables --version可以看到iptables版本是v1.4.21。 iptables -t filter -A INPUT -s 10.0.0.8 -j ACCEPT会在最后一行插入。 10…

04 qt功能类、对话框类和文件操作

一 QT中时间和日期 时间 ---- QTime日期 ---- QDate对于Qt而言,在实际的开发过程中, 1)开发者可能知道所要使用的类 ---- >帮助手册 —>索引 -->直接输入类名进行查找 2)开发者可能不知道所要使用的类,只知道开发需求文档 ----> 帮助 手册,按下图操作: 1 …

WordPress更换域名后-后台无法进入,网站模版错乱,css失效,网页中图片不显示。完整解决方案(含宝塔设置)

我在实际解决问题时用到了 【简单暴力解决方案】的《方法一:修改wp-config.php》 和 【简单暴力-且特别粗暴-的解决方案】 更换域名时经常遇到的几个问题: 1、更换域名后,后台无法进入 2、更换域名后,网站模版错乱,c…

音视频FAQ(一):视频直播卡顿

一、摘要 本文介绍了视频直播卡顿的四个主要原因,用户网络问题、用户设备性能问题、技术路线的选择和实现问题。因本文主要阐述视频直播的卡顿,故技术路线的实现指的是:CDN供应商的实现问题,包含CDN性能不足、CDN地区覆盖不足。对…

Vc - Qt - 绘制窗口背景色

要在Qt中绘制一个背景颜色,你可以使用Qt的绘图功能来完成。下面是一种简单的方法: 步骤1:在你想要绘制背景颜色的QWidget(例如QMainWindow或QDialog)的派生类中,重写 它的paintEvent函数。步骤2&#xff1a…

matlab中exp和expm的区别

exp()为数组 X 中的每个元素返回指数 e x e^{x} ex expm()计算 X 的矩阵指数。 两个函数传入矩阵后计算的结果是不同的,千万不能混淆。之前曾经想当然得把exp里传入矩阵当矩阵指数使用,也未验证正确性,实不应该。

uni-app中使用pinia

目录 Pinia 是什么? uni-app 使用Pinia main.js 中引用pinia 创建和注册模块 定义pinia方式 选项options方式 定义pinia 页面中使用 pinia选项options方式 函数方式 定义pinia 页面中使用 函数方式 定义的pinia Pinia 是什么? Pinia&#xff0…

用户新增预测——baseline学习笔记

一、赛题理解 1. 赛题名称 用户新增预测挑战赛 2. 赛题数据集 赛题数据由约62万条训练集、20万条测试集数据组成,共包含13个字段。其中uuid为样本唯一标识,eid为访问行为ID,udmap为行为属性,其中的key1到key9表示不同的行为属性…

S-Video端口接口芯片ESD保护方案图

在音/视频领域,除了常见的HDMI、DVI接口等,还有一些冷门的接口,比如S-Video端口,相信很多人可能都没有听说过。S-Video视频端口同样拥有较好的数据传输功能。S-Video二分量视频端口,英文全称Separate Video&#xff0c…

Lua学习记录

Lua基础了解 Lua的注释通过 (-- 单行注释,--[[ ]] 多行注释)可以不加; 多个变量赋值,按顺序赋值,没有则为nil; function的简单用法,多个返回值配合多重赋值,以end为结束标志 Lua下标从1开始&…

JSP-学习笔记

文章目录 1.JSP介绍2 JSP快速入门3 JSP 脚本3.1 JSP脚本案例3.2 JSP缺点 4 EL表达式4.1 快速入门案例 5. JSTL标签6. MVC模式和三层架构6.1 MVC6.2 三层架构 7. 案例-基于MVC和三层架构实现商品表的增删改查 1.JSP介绍 概念 JSP(JavaServer Pages)是一种…

Azure存储账户

存储账户的概念 Azure存储账户是Azure提供的一种云存储解决方案,用于存储和访问各种类型的数据,包括文件、磁盘、队列、表格和Blob(二进制大对象)数据。存储账户可以基于访问模式和冗余需求来选择不同的类型,以满足应…

【MySQL--->表的操作】

文章目录 [TOC](文章目录) 一、创建表二、查看表三、修改表四、删除表drop table 表名; ![在这里插入图片描述](https://img-blog.csdnimg.cn/15227b8335364d41bd01b4b4dd83ee55.png) 一、创建表 语句格式:create table 表名(列名 类型,…)字符集 校验规则 存储引擎;字符集和校…

我还不知道?Android组件化插件化模块化

Android组件化、插件化和模块化是针对Android应用程序开发的一种架构设计思想和开发方式。 组件化(Componentization): 组件化是将一个大型的Android应用程序拆分成多个独立的组件(Module),每个组件可以独…

python使用装饰器记录方法耗时

思路 python使用修饰器记录方法耗时,目的是每当方法执行完后,可以记录该方法耗时,而不需要在每个方法的执行前后,去创建一个临时变量,来记录耗时。 方式一(不推荐): 在每个方法的…

source insight 添加宏-文件头加注释

source insight 3.5 自带的一些宏,在安装目录下的 utils.em 文件中,用户也可以自己写文件,命令为xxx.em ,然后把这个文件添加到项目中即可,添加后在菜单栏 Options -> Key Assignments 里输入macro 就能显示新添加的…

第一个ArkTS项目实践-鸿蒙ArkTS

第一个ArkTS项目实践-ArkTS 第一个ArkTS项目实践-ArkTS自定义组件的组成配置属性与布局配置属性布局 改变组件状态循环渲染列表数据代码ToDoItem组件ToDoList页面 效果参考资料 第一个ArkTS项目实践-ArkTS 本篇文章是官网上视频对ArkTS开发实践的第一个视频,主要是引…

Matplotlib数据可视化(三)

目录 1.绘图的填充 1.1 曲线下方区域的填充 1.2 填充部分区域 1.3 两条曲线之间的区域填充 1.4 直接使用fill进行填充 1.绘图的填充 绘图的填充可以调用fill_between()或fill()进行填充。 1.1 曲线下方区域的填充 x np.linspace(0,1,500) y np.sin(3*np.pi*x)*np.exp…

【C语言】每日一题(找到所有数组中消失的数字)

找到所有数组中消失的数字,链接奉上。 这里简单说一下,因为还没有接触到动态内存,数据结构,所以知识有限,也是尽力而为,结合题库的评论区找到了适合我的解法,以后有机会,会补上各种…

如何在HTML中使用React

突发奇想 查了查真的可以,官方文档: 在网站中添加 React – React 开始 引入js <!-- 开发环境使用 --><script src"https://unpkg.com/react18/umd/react.development.js"></script><script src"https://unpkg.com/react-dom18/umd/reac…