Hadoop 中配置的问题namenode无法启动

小李子栏 2011-10-27

在启动了ssh之后,再启动Hadoop,然后使用bin/hadoop fs -ls命令,总是出现类似于下面这种的错误。

10/03/15 19:43:10 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).

……
10/03/15 19:43:19 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 9 time(s).

Bad connection to FS. command aborted.

在此时,如果stop-all.sh的话,会发现no namenode to stop这样的语句。

然后看了一下namenode 的 log。发现错误如下:

2011-10-21 10:55:17,655 INFO org.apache.hadoop.metrics.MetricsUtil: Unable to obtain hostName
java.net.UnknownHostException: chjjun: chjjun: 未知的名称或服务
    at java.net.InetAddress.getLocalHost(InetAddress.java:1438)
    at org.apache.hadoop.metrics.MetricsUtil.getHostName(MetricsUtil.java:95)
    at org.apache.hadoop.metrics.MetricsUtil.createRecord(MetricsUtil.java:84)
    at org.apache.hadoop.metrics.jvm.JvmMetrics.<init>(JvmMetrics.java:87)
    at org.apache.hadoop.metrics.jvm.JvmMetrics.init(JvmMetrics.java:78)
    at org.apache.hadoop.metrics.jvm.JvmMetrics.init(JvmMetrics.java:65)
    at org.apache.hadoop.hdfs.server.namenode.metrics.NameNodeMetrics.<init>(NameNodeMetrics.java:103)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initMetrics(NameNode.java:199)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:302)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:433)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:421)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1359)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1368)
Caused by: java.net.UnknownHostException: chjjun: 未知的名称或服务
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:866)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1258)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1434)

也就是说未知的host名称,然后上网查了一下,查找到了文章:http://lxy2330.iteye.com/blog/1112806


然后我查看下自己的/etc/hosts中的内容如下:

127.0.0.1               localhost.localdomain localhost

::1             localhost6.localhost6domain localhost6

再看下/etc/sysconfig/network中的内容

发现HOSTNAME=chjjun

那篇文章上说是因为这个HOSTNAME在hosts中没有对应的ip所以解析不了。因此就将这个chjjun换成localhost。

之后#/etc/rc.d/init.d/network restart 重新启动网络服务。

然后再使用hadoop namenode -format

但是还是出现上面的错误。

最后,没有办法,重新启动电脑,再重新启动ssh。在启动hadoop。

使用bin/hadoop fs -ls

仍然报错。

但是这次的错误和上一次的错误不同了,并且使用的log文件的名字也有了变化,之前的log写在:

hadoop-chjjun-namenode-chjjun.log

而现在的log文件名称变为:

hadoop-chjjun-namenode-localhost.log

并且错误的内容也有了变化:

java.io.EOFException
    at java.io.RandomAccessFile.readInt(RandomAccessFile.java:776)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.isConversionNeeded(FSImage.java:836)
    at org.apache.hadoop.hdfs.server.common.Storage.checkConversionNeeded(Storage.java:697)
    at org.apache.hadoop.hdfs.server.common.Storage.access$000(Storage.java:62)
    at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:476)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:402)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:110)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:270)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:271)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:303)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:433)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:421)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1359)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1368)
2011-10-21 13:46:48,767 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.EOFException
    at java.io.RandomAccessFile.readInt(RandomAccessFile.java:776)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.isConversionNeeded(FSImage.java:836)
    at org.apache.hadoop.hdfs.server.common.Storage.checkConversionNeeded(Storage.java:697)
    at org.apache.hadoop.hdfs.server.common.Storage.access$000(Storage.java:62)
    at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:476)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:402)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:110)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:270)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:271)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:303)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:433)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:421)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1359)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1368)

似乎有了点儿希望。

之后再使用bin/hadoop fs -format命令。

该命令执行完了之后,hadoop居然可以运行了。

相关推荐

lionelf / 0评论 2020-07-28