最近一個(gè)從Hbase撈取數(shù)據(jù)進(jìn)行統(tǒng)計(jì)值的Spark Job 計(jì)算經(jīng)常報(bào)警,執(zhí)行時(shí)間大大超過以前的平均執(zhí)行時(shí)間。
于是打開一個(gè)application

發(fā)現(xiàn)這個(gè)application 有4個(gè)job,如上圖所示,但是執(zhí)行時(shí)間有點(diǎn)長(zhǎng)。
于是我點(diǎn)開正在執(zhí)行的job
然后點(diǎn)開一個(gè)執(zhí)行比較的stage
在頁面點(diǎn)開event TimeLine 看到如下

居然有一個(gè)task執(zhí)行特別慢,剛開始以為是數(shù)據(jù)傾斜,后來仔細(xì)一看數(shù)據(jù)量和其他task是一致的。所以頓時(shí)懷疑是這臺(tái)機(jī)器是要么有硬件問題,要么就是資源不夠了。
于是登陸這臺(tái)機(jī)器
top 一下 在 加 Shift + m 按照內(nèi)存排序

內(nèi)存和cpu 看起來都o(jì)k,那是不是磁盤滿了?
再看

看起來磁盤容量也沒問題啊。
沒啥辦法,于是我又去我們ganggalia上去看讀寫等指標(biāo)
讀寫次數(shù)和其他機(jī)器也沒有太大的區(qū)別。
是不是讀寫hbase有問題,于是查看hbase相關(guān)的監(jiān)控,發(fā)現(xiàn)數(shù)據(jù)分布均勻,而且沒有什么異常。比如超時(shí)的
然后我想看看磁盤的讀寫速度吧
輸入
iostat -x

突然發(fā)現(xiàn)上圖中的有一個(gè)w-wait 也就是寫入耗時(shí),都到了300多ms了,然后我又看了一下其他機(jī)器的w-wait 發(fā)現(xiàn)都是20以下,所以基本斷定是這個(gè)磁盤的問題了。然后通知運(yùn)維,讓運(yùn)維換盤。
問題解決。

總結(jié)一下步驟:
1、查看spark日志,err日志等看是否有什么異常(常見的網(wǎng)絡(luò),連接問題,磁盤空間等異常常見)
2、查看每個(gè)stage 數(shù)據(jù)是否發(fā)生切斜,
3、確認(rèn)持久化級(jí)別,是否是全部?jī)?nèi)存,查看是否出現(xiàn)spillToDisk
4、查看是否有單個(gè)節(jié)點(diǎn)執(zhí)行時(shí)間比較長(zhǎng)
5、登陸有問題的節(jié)點(diǎn),查看load,內(nèi)存以及網(wǎng)絡(luò)屬性
6、查看磁盤讀寫情況