关于机房交换机故障导致HDFS NameNode挂掉的问题(续)

本文深入分析了一个由于交换机故障导致HDFS NameNode挂掉的问题,揭示了active NN在写JNs时的故障情况,并探讨了相关配置项的重要性。通过对日志的详细解析,指出故障可能是由网络延迟或JVM GC引起,建议增加配置项`dfs.qjournal.write-txns.timeout.ms`的值以避免类似问题。
摘要由CSDN通过智能技术生成
过程是痛苦的,后面的结论是令人不安的。


上一篇的分析,确定了至少两个个结论:
一、如果总体上active NN写JNs出问题,那么active NN就主动调用terminate,进程退出;
二、JNs的相关的一个配置项:dfs.namenode.shared.edits.dir,这个配置项中出现的JN的信息,对NN来说一定是“required”的。


这篇后续的分析,解释“总体上active NN写JNs出问题”,是怎么回事。以上一篇相反的另一个方向的思路,分析问题是怎么导致的,以及解释代码与QJM的quorum机制是否一致(答案必然是肯定的了)。


还是从active NN FATAL log说起。


2015-11-16 07:36:50,478 INFO  namenode.FSEditLog (FSEditLog.java:printStatistics(673)) - Number of transactions: 11830 Total time for transactions(ms): 394 Number of transactions batched in Syncs: 7342 Number of syncs: 350 SyncTimes(ms): 735 30792 26555
1598 2015-11-16 07:36:50,481 FATAL namenode.FSEditLog (JournalSet.java:mapJournalsAndReportErrors(364)) - Error: flush failed for required journal (JournalAndStream(mgr=QJM to [192.168.146.66:8485, 192.168.146.67:8485, 192.168.146.68:8485], stream=QuorumOutputStream starting at txid 4776804880))
1599 java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.
1600         at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:137)
1601         at org.apache.hadoop.hdfs.qjournal.client.QuorumOutputStream.flushAndSync(QuorumOutputStream.java:107)
1602         at org.apache.hadoop.hdfs.server.namenode.EditLogOutputStream.flush(EditLogOutputStream.java:113)
1603         at org.apache.hadoop.hdfs.server.namenode.EditLogOutputStream.flush(EditLogOutputStream.java:107)
1604         at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetOutputStream$8.apply(JournalSet.java:499)
1605         at org.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:359)
1606         at org.apache.hadoop.hdfs.server.namenode.JournalSet.access$100(JournalSet.java:57)
1607         at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalSetOutputStream.flush(JournalSet.java:495)
1608         at org.apache.hadoop.hdfs.server.namenode.FSEditLog.logSync(FSEditLog.java:623)
1609         at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.completeFile(FSNamesystem.java:3001)
1610         at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.complete(NameNodeRpcServer.java:647)
1611         at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.complete(ClientNamenodeProtocolServerSideTrans     latorPB.java:484)
1612         at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenode     ProtocolProtos.java)
1613         at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
1614         at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
1615         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
1616         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
1617         at java.security.AccessController.doPrivileged(Native Method)
1618         at javax.security.auth.Subject.doAs(Subject.java:415)
1619         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
1620         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)


补充相关日志:
1469:2015-11-16 07:36:26,770 WARN  client.QuorumJournalManager (IPCLoggerChannel.java:call(378)) - Took 4670ms to send a batch of 78 edits (12198 bytes) to remote journal 192.168.146.67:8485
1471:2015-11-16 07:36:50,383 WARN  client.QuorumJournalManager (IPCLoggerChannel.java:call(378)) - Took 2126
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值