2017-08-05 51 views
0

IAM使用Hadoop的Apache 2.7.1是由 两名节点MN1,MN2和3期刊节点无法启动namenode.java.lang.IllegalStateException

但在我工作的群集我面临的高可用性集群以下错误

当我发出start-dfs.sh MN1是待机和MN2活跃

但经过论文两个namenodes的,如果一个人是关闭没有可能 打开它再次 这里是这两个n之一的最后一行日志AME节点

2017-08-05 09:37:21,063 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Need to save fs image? false (staleImage=true, haEnabled=true, isRollingUpgrade=false) 
2017-08-05 09:37:21,063 INFO org.apache.hadoop.hdfs.server.namenode.NameCache: initialized with 3 entries 72 lookups 
2017-08-05 09:37:21,088 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Finished loading FSImage in 7052 msecs 
2017-08-05 09:37:21,300 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: RPC server is binding to mn2:8020 
2017-08-05 09:37:21,304 INFO org.apache.hadoop.ipc.CallQueueManager: Using callQueue class java.util.concurrent.LinkedBlockingQueue 
2017-08-05 09:37:21,316 INFO org.apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 8020 
2017-08-05 09:37:21,353 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemState MBean 
2017-08-05 09:37:21,354 WARN org.apache.hadoop.hdfs.server.common.Util: Path /opt/hadoop/metadata_dir should be specified as a URI in configuration files. Please update hdfs configuration. 
2017-08-05 09:37:21,361 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. 
java.lang.IllegalStateException 
     at com.google.common.base.Preconditions.checkState(Preconditions.java:129) 
     at org.apache.hadoop.hdfs.server.namenode.LeaseManager.getNumUnderConstructionBlocks(LeaseManager.java:119) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getCompleteBlocksTotal(FSNamesystem.java:5741) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startCommonServices(FSNamesystem.java:1063) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.startCommonServices(NameNode.java:678) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:664) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:811) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:795) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1488) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1554) 
2017-08-05 09:37:21,364 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1 
2017-08-05 09:37:21,365 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at mn2/192.168.25.22 
************************************************************/ 

回答

0

这可能是

1.Namenode PORT may be Change for each NODE. 
+0

但后面还有没有可能重新开始的NameNode会是监守端口变化ABD怎样的解决它 –

0

这是一个特别令人烦恼的问题。

  1. 燕子IllegalStateExceptions通过removeShutdownHook在文件系统抛出。的Javadoc指出:

    公共布尔removeShutdownHook(挂线) 抛出: IllegalStateException - 如果虚拟机已经处于关停

的过程所以,如果我们得到这个例外,这意味着我们已经在关闭过程中,所以我们不能,试试我们可能的removeShutdownHook。如果Runtime有一个方法Runtime.isShutdownInProgress(),我们可以在removeShutdownHook调用之前检查它。目前还没有这样的方法。在我看来,无论这个JIRA的需求如何,这都是一个很好的补丁。

  1. 首先,不从NM发送SIGTERM到MR-AM。相反,我们应该公开一个NM的机制,礼貌地告诉AM它不再需要,应该尽快关闭。即使在此之后,如果管理员敢杀一个SIGTERM的MRAppMaster,该JobHistory将失去打败的3614
+0

我的虚拟机仍然工作,其上的其他服务是journalnode,DFSZKFailoverController,QuorumPeerMain仍然工作,但没有退出,所以我的虚拟机不在关闭的过程中 –

+0

,并做了什么被视为hadoop中的错误,以及如何解决它在这个状态? –

0

的目的,我发现我的问题是在杂志上的节点,而不是在NameNode的 即使日志的NameNode会显示在问题中提到的错误

JPS显示杂志节点,但因为日志节点服务关闭是假 即使它在JPS输出发现

这样一个解决方案,我发出的Hadoop守护。 sh stop journalnode then hadoop-daemon.sh start journalnode

,然后开始NameNode会像我的评论时,我发出start-dfs.sh都namenodes正常启动重新工作