一、問題情況:
- 今天早上收到報警,HDFS namenode 服務例外,發生了自動故障遷移,

二、報錯內容:
2021-10-26 07:13:56,310 INFO org.apache.hadoop.hdfs.server.namenode.FileJournalManager: Fina lizing edits file /home/hadoop/dfs/nn/current/edits_inprogress_0000000000824809456 -> /home/ hadoop/dfs/nn/current/edits_0000000000824809456-0000000000824809550
2021-10-26 07:13:56,310 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLog: Starting log segment at 824809551
2021-10-26 07:16:30,946 INFO org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationM onitor: Rescanning after 162713 milliseconds
2021-10-26 07:16:30,947 WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Wa ited 154637 ms (timeout=20000 ms) for a response for startLogSegment(824809551). No response s yet.
2021-10-26 07:16:30,947 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: start ing log segment 824809551 failed for required journal (JournalAndStream(mgr=QJM to [10.11.2. 140:8485, 10.11.2.141:8485, 10.11.2.142:8485], stream=null))
java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.
at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerS et.java:137)
at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.startLogSegment(QuorumJou rnalManager.java:403)
at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalAndStream.startLogSegment(Jo urnalSet.java:107)
at org.apache.hadoop.hdfs.server.namenode.JournalSet$3.apply(JournalSet.java:222)

三、問題原因:
仔細查看nn的日志,和對原始碼的分析,發現是由于 namenode這個時間點進行了多次長時間的 full gc (持續1分鐘以上 ),導致寫 journalnode 超時(默認是20s), namenode行程退出,同時從jn的日志可以看出,后面是沒有nn的請求過來的(因為nn已經掛掉了),
-
查看下namenode 的堆記憶體使用情況,目前JVM 配置了32G,已幾乎沒有剩余,

-
查看下namenode 的gc 情況,

可以看到Full gc 時間基本在1分鐘以上,甚至有些資料都無法被正確采集到,而恢復正常的namenode 基本gc 時間是很短的,
那么為什么會導致多次長時間的full gc呢,主要是namenode 堆記憶體幾乎被耗盡,導致一直在做長時間的GC,使得寫入journalNode 超時,引發了自動的故障轉移,
四、解決方案:
通過這次問題排查,也梳理下集群,發現有些不合理的地方,一并處理了:
- 增加zookeeper 連接數 60 -> 300
- 增加namenode jvm大小 32G -> 40G
- 增加journalNode jvm大小 256M -> 4G
- 增加journalNode 寫入資料超時時間為60s
- 降低datanode jvm大小 16 -> 8G
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339069.html
標籤:其他
