大數據平臺中元數據庫—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.pswp.cn/news/42517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42517.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Unity]Lua本地時間、倒計時和正計時。

慣例,直接上代碼: --正計時開始時的時間戳 self.begin_time os.time() --倒計時時長,01:30:00 self.countdown_time 5400 --是否開始計時 self.is_update_local_time true--Unity Update function time_transition:update_local_timer()i…

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…

代碼隨想錄day52

300最長遞增子序列 class Solution { public:int lengthOfLIS(vector<int>& nums) {int piles 0; // 牌堆數初始化為 0vector<int> top(nums.size()); // 牌堆數組 topfor (int i 0; i < nums.size(); i) {int poker nums[i]; int left 0, right…

04 qt功能類、對話框類和文件操作

一 QT中時間和日期 時間 ---- QTime日期 ---- QDate對于Qt而言,在實際的開發過程中, 1)開發者可能知道所要使用的類 ---- >幫助手冊 —>索引 -->直接輸入類名進行查找 2)開發者可能不知道所要使用的類,只知道開發需求文檔 ----> 幫助 手冊,按下圖操作: 1 …

Android 13像Settings一樣獲取SIM卡信息

一.背景 由于客戶定制的Settings里面需要獲取到SIM卡信息,所以需要實現此功能。 目錄 一.背景 二.前提條件 三.調用api 二.前提條件 首先應用肯定要是系統應用,并且導入framework.jar包,具體可以參考: Android 應用自動開啟輔助(無障礙)功能并使用輔助(無障礙)功能_…

python中的cnn:介紹和基本使用方法

python中的cnn&#xff1a;介紹和基本使用方法 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff0c;簡稱CNN&#xff09;是一種在圖像識別、語音識別、自然語言處理等許多領域取得顯著成功的深度學習模型。CNN的設計靈感來源于生物的視覺系統&#xff0c;由多…

WordPress更換域名后-后臺無法進入,網站模版錯亂,css失效,網頁中圖片不顯示。完整解決方案(含寶塔設置)

我在實際解決問題時用到了 【簡單暴力解決方案】的《方法一&#xff1a;修改wp-config.php》 和 【簡單暴力-且特別粗暴-的解決方案】 更換域名時經常遇到的幾個問題&#xff1a; 1、更換域名后&#xff0c;后臺無法進入 2、更換域名后&#xff0c;網站模版錯亂&#xff0c;c…

網絡通信原理網絡層TCP/IP協議(第四十三課)

1.什么是TCP/IP 目前應用廣泛的網絡通信協議集 國際互聯網上電腦相互通信的規則、約定。 2.主機通信的三要素 IP地址:用來標識一個節點的網絡地址(區分網絡中電腦身份的地址,如人有名字) 子網掩碼:配合IP地址確定網絡號 IP路由:網關的地址,網絡的出口 3.IP地址 …

軟件第三方測評機構做安全測試有用嗎?

術語第三方測試/外包軟件測試本身是不言自明的&#xff0c;即由任何個人/獨立組織對軟件進行測試 不直接或間接參與特定軟件的開發。 在做出選擇的決定時&#xff0c;可能會想到很多問題 內部測試團隊或進行離岸第三方測試&#xff0c;首先是“我們為什么要外包軟件測試&#…

C++設計模式結構型之代理模式

一、概述 代理模式是一種結構型模式&#xff0c;在很多不同的場合具有廣泛的分類和應用。其主要實現的思想是在客戶端和真正要訪問的對象之間引入一個 代理對象&#xff08;間接層&#xff09;&#xff0c;于是&#xff0c;以往客戶端對真正對象的訪問現在變成了通過代理對…

數學建模-規劃工具箱yalmip

官網下載 實例 %% yalmip 求解 yalmip clc;clear;close all; %% %sdpvar實型變量 intvar 整形變量 binvar 0-1型變量 psdpvar(3,1); %定義變量 %目標函數 要把求最大值轉化為最小值 Objective-p(1)^2p(2)^2-p(2)*p(3);%約束條件 Constraints[0<p<1,(p(1)^2p…

音視頻FAQ(一):視頻直播卡頓

一、摘要 本文介紹了視頻直播卡頓的四個主要原因&#xff0c;用戶網絡問題、用戶設備性能問題、技術路線的選擇和實現問題。因本文主要闡述視頻直播的卡頓&#xff0c;故技術路線的實現指的是&#xff1a;CDN供應商的實現問題&#xff0c;包含CDN性能不足、CDN地區覆蓋不足。對…

Vc - Qt - 繪制窗口背景色

要在Qt中繪制一個背景顏色&#xff0c;你可以使用Qt的繪圖功能來完成。下面是一種簡單的方法&#xff1a; 步驟1&#xff1a;在你想要繪制背景顏色的QWidget&#xff08;例如QMainWindow或QDialog&#xff09;的派生類中&#xff0c;重寫 它的paintEvent函數。步驟2&#xff1a…

matlab中exp和expm的區別

exp()為數組 X 中的每個元素返回指數 e x e^{x} ex expm()計算 X 的矩陣指數。 兩個函數傳入矩陣后計算的結果是不同的&#xff0c;千萬不能混淆。之前曾經想當然得把exp里傳入矩陣當矩陣指數使用&#xff0c;也未驗證正確性&#xff0c;實不應該。

uni-app中使用pinia

目錄 Pinia 是什么&#xff1f; uni-app 使用Pinia main.js 中引用pinia 創建和注冊模塊 定義pinia方式 選項options方式 定義pinia 頁面中使用 pinia選項options方式 函數方式 定義pinia 頁面中使用 函數方式 定義的pinia Pinia 是什么&#xff1f; Pinia&#xff0…

用戶新增預測——baseline學習筆記

一、賽題理解 1. 賽題名稱 用戶新增預測挑戰賽 2. 賽題數據集 賽題數據由約62萬條訓練集、20萬條測試集數據組成&#xff0c;共包含13個字段。其中uuid為樣本唯一標識&#xff0c;eid為訪問行為ID&#xff0c;udmap為行為屬性&#xff0c;其中的key1到key9表示不同的行為屬性…

S-Video端口接口芯片ESD保護方案圖

在音/視頻領域&#xff0c;除了常見的HDMI、DVI接口等&#xff0c;還有一些冷門的接口&#xff0c;比如S-Video端口&#xff0c;相信很多人可能都沒有聽說過。S-Video視頻端口同樣擁有較好的數據傳輸功能。S-Video二分量視頻端口&#xff0c;英文全稱Separate Video&#xff0c…

Macbook 終端 git 命令補全和提示

Mac OS自帶的終端&#xff0c;用起來雖然有些不太方便&#xff0c;界面也不夠友好&#xff0c;關鍵是在windows上用習慣了自動補全功能&#xff0c;在Mac上一個個的拼寫單詞是真的難受&#xff0c;逼著我記英文單詞。 經過一天的磨合&#xff0c;我實在忍不了&#xff0c;在網上…

復習vue3,簡簡單單記錄

這里的知識是結合視頻以及其他文章一起學習&#xff0c;僅用于個人復習記錄 ref 和reactive ref 用于基本類型 reactive 用于引用類型 如果使用ref 傳遞對象&#xff0c;修改值時候需要寫為obj.value.attr 方式修改屬性值 如果使用reactive 處理對象&#xff0c;直接obj.att…

Lua學習記錄

Lua基礎了解 Lua的注釋通過 (-- 單行注釋&#xff0c;--[[ ]] 多行注釋)可以不加&#xff1b; 多個變量賦值&#xff0c;按順序賦值&#xff0c;沒有則為nil&#xff1b; function的簡單用法&#xff0c;多個返回值配合多重賦值&#xff0c;以end為結束標志 Lua下標從1開始&…