HDFS:namenode.FSEditLog (JournalSet.java:mapJournalsAndReportErrors(390)) - 错误:所需日志的刷新失败

问题描述

在我们的一个平台上,HDFS namenode 每 1 或 3 天关闭一次并显示以下错误消息

FATAL namenode.FSEditLog (JournalSet.java:mapJournalsAndReportErrors(390)) - Error: flush Failed for required journal (JournalAndStream(mgr=QJM to [<ip1>:<port>,<ip2>:<port>,etc],stream=QuorumOutputStream starting at txid 29873171))
java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.
    at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:137)
    at org.apache.hadoop.hdfs.qjournal.client.QuorumOutputStream.flushAndSync(QuorumOutputStream.java:109)
    at org.apache.hadoop.hdfs.server.namenode.EditlogoutputStream.flush(EditlogoutputStream.java:113)
    at org.apache.hadoop.hdfs.server.namenode.EditlogoutputStream.flush(EditlogoutputStream.java:107)
    at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetoutputStream$8.apply(JournalSet.java:525)
    at org.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:385)
    at org.apache.hadoop.hdfs.server.namenode.JournalSet.access$100(JournalSet.java:55)
    at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetoutputStream.flush(JournalSet.java:521)
    at org.apache.hadoop.hdfs.server.namenode.FSEditLog.logSync(FSEditLog.java:710)
    at org.apache.hadoop.hdfs.server.namenode.FSEditLogAsync.run(FSEditLogAsync.java:188)
    at java.lang.Thread.run(Thread.java:748)

在这个 FATAL 日志之前,我们可以看到以下类型的日志,我们可以在这些日志上检测响应时间的下降

WARN  client.QuorumJournalManager (QuorumCall.java:waitFor(185)) - Waited 18014 ms (timeout=20000 ms) for a response for sendEdits. Succeeded so far: [<ip1>:<port>,<ip2>:<port>]

您是否遇到过这个问题,您有什么建议可以解决吗?

我们已经:

  • 检查我们的虚拟机时间是否同步
  • 检测到当问题发生时,网络上正在处理大量数据,但尚未检测到根本原因
  • 检查了我们的网络设备。除了我们将要修复的端口从 UP 状态快速变为 DOWN 状态的问题外,网络似乎是正确的

提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)