Namenode守护程序无法正常启动

时间:2017-01-28 04:54:09

标签: hadoop hdfs namenode

我刚开始从 Hadoop:权威指南这本书中学习hadoop。

我在Pseudodistribution模式下遵循了Hadoop安装教程。我启用了无密码登录 ssh 。 在首次使用之前格式化 hdfs 文件系统。它首次成功启动。 之后我使用class Derived(Base): def method(self, arg): # Maybe do something here super(Derived, self).method(arg) # Could so something here as well 将文本文件复制到HDFS,一切都很顺利。但是,如果我重新启动系统并再次启动守护程序并查看Web UI,则只能成功启动YARN。

当我发出stop-dfs.sh命令时,我得到了

copyFromLocal

如果我格式化hdfs文件系统再次,然后尝试启动守护程序,那么它们都会成功启动。

这是我的配置文件。正如hadoop权威指南中所说的那样。

HDFS-site.xml中

Stopping namenodes on [localhost]
localhost: no namenode to stop
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode

芯-site.xml中

<configuration>
    <property>
        <name>dfs.replication</name>    
        <value>1</value>
    </property>

</configuration>

mapred-site.xml中

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost/</value>
    </property>
</configuration>

纱-site.xml中

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

</configuration>

这是namenode日志文件中的错误

<configuration>

<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>    
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

这是来自mapred log

WARN org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop/dfs/name does not exist
 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:327)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:215)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)

我访问了apache hadoop : connection refused,其中说

  • 检查主机名的条目是否已映射到/ etc / hosts中的127.0.0.1或127.0.1.1(Ubuntu因此而臭名昭着)。

我发现我的/ etc / hosts中有一个条目,但如果我将其删除,我的sudo会导致错误Caused by: java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:495) at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:614) at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:712) at org.apache.hadoop.ipc.Client$Connection.access$2900(Client.java:375) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1528) at org.apache.hadoop.ipc.Client.call(Client.java:1451) ... 33 more 。如果不删除映射到127.0.1.1

的主机名,我应该在sudo: unable to resolve host中附加什么

我无法理解这个问题的根本原因。

2 个答案:

答案 0 :(得分:2)

它在Namenode日志文件中说明了namenode目录的默认存储是/tmp/hadoop。某些系统在重启时在linux中格式化/tmp目录。所以一定是问题所在。

您需要通过更改hdfs-site.xml配置文件来更改默认的namenode和datanode目录。

hdfs-site.xml

中添加此内容
<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/"your-user-name"/hadoop</value> 
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/"your-user-name"/datanode</value>   
    </property>

通过hdfs namenode -format命令格式化您的namenode。

我认为这将结束你的问题。

答案 1 :(得分:0)

如果配置文件不是问题,请尝试以下操作:

1.首先删除临时文件夹中的所有内容:

TestClass(const TestClass & t)

2.格式化namenode:

 rm -Rf <tmp dir> (my was /usr/local/hadoop/tmp)

3.再次启动所有流程:

bin/hadoop namenode -format