namenode无法启动,解决

hadoop集群关闭后,重新开启
Namenode无法启动。
现象:
执行start-all.sh后,
在master机器是哪个,jps里虽然显示有NameNode进程,
但是web查看hdfs无法进行,也无法执行hadoop fs相关命令。

查看logs/hadoop-hadoop-namenode-xxx.log
发现在启动过程的读edits文件花了3000+s,
读完这个文件之后,接下来的环节就会报出错误信息如下:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = baby6/10.1.1.26
STARTUP_MSG: args = []
STARTUP_MSG: version = 0.20.2+737
STARTUP_MSG: build = git://ubuntu64-build01.sf.cloudera.com/ on branch -r 98c55c28258aa6f42250569bd7fa431ac657bdbd; compiled by 'root' on Tue Dec 14 11:50:19 PST 2010
************************************************************/
2011-10-13 11:58:10,053 INFO org.apache.hadoop.metrics.jvm.JvmMetrics: Initializing JVM Metrics with processName=NameNode, sessionId=null
2011-10-13 11:58:10,058 INFO org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics: Initializing NameNodeMeterics using context object:org.apache.hadoop.metrics.spi.NullContext
2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=hadoop
2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup
2011-10-13 11:58:10,117 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true
2011-10-13 11:58:10,126 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
2011-10-13 11:58:11,048 INFO org.apache.hadoop.hdfs.server.namenode.metrics.FSNamesystemMetrics: Initializing FSNamesystemMetrics using context object:org.apache.hadoop.metrics.spi.NullContext
2011-10-13 11:58:11,050 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStatusMBean
2011-10-13 11:58:11,100 INFO org.apache.hadoop.hdfs.server.common.Storage: Number of files = 2145244
2011-10-13 11:59:50,339 INFO org.apache.hadoop.hdfs.server.common.Storage: Number of files under construction = 14
2011-10-13 11:59:50,344 INFO org.apache.hadoop.hdfs.server.common.Storage: Image file of size 313452606 loaded in 99 seconds.
2011-10-13 13:04:11,893 INFO org.apache.hadoop.hdfs.server.common.Storage: Edits file /home/hadoop/hdfs/NameNode/current/edits of size 71738186 edits # 430017 loaded in 3861 seconds.
2011-10-13 13:19:42,254 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.regex.Pattern.compile(Pattern.java:1451)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.split(String.java:2292)
at java.lang.String.split(String.java:2334)


主要是因为读edits.new文件时,内存不够。


解决:
删了NameNode/current/edits.new。
这样操作会丢失所有在edits.new里面记录的对hdfs的操作。
(网上有的说可以删除edites文件的末尾不完整的记录。)

之后重新启动hadoop,虽然可以起来,但是依然挂了部分机器。
查看日至,依旧是报错内存不够。


然后修改bin/hadoop脚本
将:JAVA_HEAP_MAX=-Xmx1000m
改为:JAVA_HEAP_MAX=-Xmx2046m

然后重启hadoop,ok。


之后,用hadoop fsck检测损坏的文件,
该部分具体方法见:http://blog.csdn.net/liangliyin/article/details/5872172


这样基本上差不多了。
展开阅读全文

没有更多推荐了,返回首页