十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要講解了“基于TBDS的flume異常問題怎么排查”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“基于TBDS的flume異常問題怎么排查”吧!
創(chuàng)新互聯(lián)專注于常寧企業(yè)網(wǎng)站建設,響應式網(wǎng)站,電子商務商城網(wǎng)站建設。常寧網(wǎng)站建設公司,為常寧等地區(qū)提供建站服務。全流程定制設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
長期運營中發(fā)現(xiàn)部署了flume集群的磁盤滿,經(jīng)過排查發(fā)現(xiàn)flume的日志目錄導致。
具體看flume的大文件日志發(fā)現(xiàn),某個MySQL相關的sink持續(xù)拋出異常,打印了大量的日志
根據(jù)這個異常信息(exception)即:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed
字面意思為MySQL服務的狀態(tài)(連接)已經(jīng)關閉的狀態(tài)下,仍然有提交事務操作,拋出了異常,但這個異常持續(xù)拋出,仍需要深入分析。
既然是flume拋出的,且與MySQL有關,那縮小問題范圍,查找flume里誰在寫MySQL。(flume的配置一般位于/etc/flume/conf/agent/flume.conf)
關閉階段僅僅檢查連接是否存在。
從sink的邏輯看,只有在空連接的情況下,sink狀態(tài)才會是BACKOFF,其他情況下狀態(tài)都是READY,且在向MySQL提交事務前后,不會檢查連接狀態(tài),即使在SQL拋出異常的情況下也沒有修改sink狀態(tài),導致提交拋出異常后,sink循環(huán)執(zhí)行,循環(huán)拋出異常。這里就是不斷拋出異常的根本。那么連接到底是什么時候關閉的呢?這里的原因猜測有2個:(1)sink長時間與MySQL沒有交互,超過連接自動關閉時間;(2)MySQL的異常關閉。
是否sink長時間與MySQL無交互
查詢MySQL的超時配置如下:
可見,sink與MySQL之間的斷開并非二者長期無交互。
是否人為斷開服務
查詢?nèi)藶閱覯ySQL的時間如下:
時間吻合。
結論
MySQL服務異常導致flume提交事務時連接中斷,且flume沒有處理這種異常,引發(fā)死循環(huán)提交事務,并在這種異常情況下,flume已無法正常工作。
根據(jù)以上的推論,可進行如下驗證這個異常:
在HUE里執(zhí)行多次HiveSQL
手動重啟flume寫入的MySQL實例。
flume進入無限循環(huán)的拋出異常狀態(tài),驗證成功。
感謝各位的閱讀,以上就是“基于TBDS的flume異常問題怎么排查”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對基于TBDS的flume異常問題怎么排查這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!