日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题

發布時間:2025/3/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | yhf20071

【Arthas 官方社區正在舉行征文活動,參加即有獎品拿~點擊投稿】

公司新搭 HDFS 集群,namenode做ha,但是在啟動 StandbyNamenode 節點的時候出現奇怪的現象:空集群加載 Editlog 很慢,每次重啟幾乎耗時都在二三十分鐘

為了方便大家理解,大致說下 StandbyNamenode(以下簡稱 SNN)啟動過程:

  • SNN 啟動時,如果本地沒有 FSImage會去 ANN(ActiveNamenode)拉取 FSImage
  • 如果本地有 FSImage,則會根據 transactionId 去 JournalNode 拉取 gap 的 editlog,在本地做合并

問題就出在第 2 步,在從 JournalNode 拉取 EditLog 過程中出現固定 15s 延遲。一般來說,空集群幾乎沒有操作, editlog 不會太大,不應該出現每次從 JournalNode 拉取 EditLog 都耗費 15s 的時間,日志如下(為了方便觀察截取部分日志):

2020-11-04 18:27:27,577 INFO namenode.RedundantEditLogInputStream (RedundantEditLogInputStream.java:nextOp(177)) - Fast-forwarding stream 'http://cbdp-online1.sdns.fin ancial.cloud:8480/getJournal?jid=hdfs-ha&segmentTxId=213656&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true' to transaction ID 184269 2020-11-04 18:27:42,582 INFO namenode.FSEditLogLoader (FSEditLogLoader.java:loadEditRecords(289)) - replaying edit log: 1/44 transactions completed. (2%) 2020-11-04 18:27:42,583 INFO namenode.FSImage (FSEditLogLoader.java:loadFSEdits(162)) - Edits file http://cbdp-online1.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha &segmentTxId=213656&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true, http://cbdp-online2.sdns.financial.cloud:8 480/getJournal?jid=hdfs-ha&segmentTxId=213656&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true, http://cbdp-onli ne3.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&segmentTxId=213656&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgres sOk=true of size 5981 edits # 44 loaded in 15 seconds......2020-11-04 18:27:42,583 INFO namenode.RedundantEditLogInputStream (RedundantEditLogInputStream.java:nextOp(177)) - Fast-forwarding stream 'http://cbdp-online1.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&;segmentTxId=213700&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true' to transaction ID 184269 2020-11-04 18:27:57,588 INFO namenode.FSEditLogLoader (FSEditLogLoader.java:loadEditRecords(289)) - replaying edit log: 1/53 transactions completed. (2%) 2020-11-04 18:27:57,589 INFO namenode.FSImage (FSEditLogLoader.java:loadFSEdits(162)) - Edits file http://cbdp-online1.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&;segmentTxId=213700&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true, http://cbdp-online2.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&;segmentTxId=213700&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true, http://cbdp-online3.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&;segmentTxId=213700&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true of size 7088 edits # 53 loaded in 15 seconds

1.首先通過日志初步定位代碼,粗略定位耗時方法

trace org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader loadFSEdits

2.上面的結果只能確定大致耗時方法塊,不能精確定位實際耗時方法,如果要精確定位,需要一層一層展開,其中還涉及回調函數、native 函數;為了可以更方便的定位代碼,我們先執行 profiler start,觀察下耗時函數調用

profiler start/stop

3.繼續追蹤函數

trace org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream$URLLog$1 run

4.因為過程中涉及了 jdk 函數追蹤,我們需要設置 options unsafe true

trace --skipJDKMethods false sun.net.www.http.HttpClient parseHTTPHeader trace --skipJDKMethods false java.net.SocketInputStream socktRead '#cost > 10000'

5.我們最后通過調用棧確認代碼執行路徑

stack *SocketInputStream socketRead "#cost > 10000"

發現由于 StandbyNameNode 的網絡讀取數據造成阻塞,到此已經碰到 native 函數,在 java 層面已經沒有有效方法進行分析。

這時我看到 StandbyNameNode 的日志:

2020-11-04 18:27:42,583 INFO namenode.RedundantEditLogInputStream (RedundantEditLogInputStream.java:nextOp(177)) - Fast-forwarding stream 'http://cbdp-online1.sdns.financial.cloud:8480/getJournal?jid=hdfs-ha&;segmentTxId=213700&storageInfo=-64%3A272699407%3A1603893889358%3ACID-aa8ec1b5-a501-4195-9299-e14abefbdc11&inProgressOk=true' to transaction ID 184269

同時想起了 @赫炎 提出的思路,有可能是在 JournalNode 端讀取 EditLog 文件的時候有阻塞。

6.我們在 JournalNode 側追蹤代碼調用耗時

trace --skipJDKMethods false org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet doGet '#cost > 10000'

發現在調用 java.net.InetSocketAddress.getHostName 處耗時 15s,至此找到了罪魁禍首。

結論:

  • 經分析發現在在開啟 Kerberos 的情況下,JournalNode 側響應 getEditLog 接口調用時會進入方法 isValidRequestor,此時會去解析 SecondNameNode 的 hostName,據此搜索對應的 principal
  • dns 域名解析服務不能獲取 SecondNameNode 的默認地址 0.0.0.0:9868,也即不能解析 0.0.0.0 的 hostName,此處超時 15s 返回,這樣每次通過 URLLog 獲取 JournalNode的EditLog 時,總會有額外耗時 15s,導致 SNN 加載 EditLog 變慢。
  • 為了驗證猜想,在每個 JournalNode 節點 hosts 文件配置 0.0.0.0 0.0.0.0,重啟 SNN,速度提升了 20 倍

    不得不說,Arthas 作為動態追蹤調試 java 進程的神器,真的很方便開發人員定位問題。贊一個!

    總結

    以上是生活随笔為你收集整理的利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 加勒比不卡视频 | 四虎国产在线观看 | 亚洲97视频| 欧美偷拍一区二区 | 美国三级视频 | 国产激情在线 | 久久久久九九九九 | 欧美性猛交性大交 | 日本欧美不卡 | 久久久久国 | 亚洲高清视频在线观看 | 色噜噜色综合 | 91精品视频免费看 | 毛片网在线 | 亚洲黄色三级 | 国产精品久久毛片av大全日韩 | 国产精品久久不卡 | 国产麻豆天美果冻无码视频 | 午夜精品久久久久久久99黑人 | 欧美视频直播网站 | 欧美一区二区免费在线观看 | 夜夜爽妓女8888视频免费观看 | 欧美日韩一区二区区别是什么 | 黄色欧美在线 | 亚洲欧美影院 | 亚洲三级色| 天天干天天色综合 | 日本久久99 | 黄色免费看视频 | 老熟妇午夜毛片一区二区三区 | 天堂网站 | 免费a级黄色片 | 国产成人精品无码高潮 | 欧美日韩国产精品成人 | 成人精品亚洲人成在线 | 成人免费在线看片 | 亚洲在线a| 日本不卡一区二区三区 | 欧美91精品久久久久国产性生爱 | 欧美日韩国产精品成人 | 中文字幕专区 | 日韩午夜免费 | 国产欧美三区 | 亚洲色图视频在线观看 | 91精品人妻一区二区 | 亚洲第一视频在线观看 | 欧美大片在线观看 | 久草青青视频 | 亚洲在线一区二区 | av一二区 | 欧美一级淫片007 | 波多野结衣中文在线 | 97超级碰碰碰 | 麻豆精品国产 | 成人小视频免费 | 香蕉视频在线免费播放 | 久久偷看各类女兵18女厕嘘嘘 | 男人和女人日批视频 | 就去干成人网 | 国产精品一区在线观看 | 小镇姑娘1979版 | 中文字幕精品无码一区二区 | 欧美888| 国产农村妇女毛片精品久久麻豆 | 亚洲欧美校园春色 | 蜜桃av色偷偷av老熟女 | 悠悠色综合 | 88xx成人永久免费观看 | 色片在线播放 | 99啪啪| 黄色av网站在线免费观看 | 伊人中文字幕在线 | 999视频| 少妇高潮av | 黄色a一级 | 精品久久久久中文慕人妻 | 男人晚上看的视频 | 色戒av| 国产精品三级av | 免费三级网站 | 欧美不卡一区二区 | 精品国产乱子伦 | 久久免费福利视频 | www一级片| 免费看久久 | av在线手机版 | av成人在线看 | 国产精品入口免费 | 婷婷六月天 | 日韩欧美中文在线观看 | 欧美精品性视频 | 玉足调教丨vk24分钟 | 一区二区三区视频在线观看免费 | 久久久精品动漫 | 欧美日韩精品一区二区三区四区 | va欧美| 雷电将军和丘丘人繁衍后代视频 | 97网站| 特级淫片aaaaaaa级 |