Hadoop Namenode守护程序未正确启动

Hadoop Namenode守护程序未正确启动,hadoop,hdfs,namenode,Hadoop,Hdfs,Namenode,我刚刚从hadoop:the Financial guide一书开始学习hadoop 我遵循了在伪分发模式下安装Hadoop的教程。我启用了ssh的无密码登录。 在首次使用hdfs文件系统之前对其进行格式化。它第一次成功启动。 在那之后,我使用copyFromLocal将一个文本文件复制到HDFS,一切正常。但是,如果我重新启动系统并再次启动守护进程并查看web UI,则只有Thread成功启动 当我发出stop-dfs.sh命令时,我得到 Stopping namenodes on [loca

我刚刚从hadoop:the Financial guide一书开始学习hadoop

我遵循了在伪分发模式下安装Hadoop的教程。我启用了ssh的无密码登录。 在首次使用hdfs文件系统之前对其进行格式化。它第一次成功启动。 在那之后,我使用
copyFromLocal
将一个文本文件复制到HDFS,一切正常。但是,如果我重新启动系统并再次启动守护进程并查看web UI,则只有Thread成功启动

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

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
如果我再次格式化hdfs文件系统,然后尝试启动守护进程,那么它们都会成功启动

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

hdfs-site.xml

我访问了一个说

  • 检查/etc/hosts中是否没有映射到127.0.0.1或127.0.1.1的主机名条目(Ubuntu为此而臭名昭著)
我发现我的/etc/hosts中有一个条目,但如果我将其删除,我的sudo中断将导致错误
sudo:无法解析主机
。如果不删除映射到127.0.1.1的主机名,我应该在
/etc/hosts
中附加什么


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

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

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

 rm -Rf <tmp dir> (my was /usr/local/hadoop/tmp)
3.重新启动所有流程:

bin/start-all.sh

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

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

 rm -Rf <tmp dir> (my was /usr/local/hadoop/tmp)
3.重新启动所有流程:

bin/start-all.sh

它在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>

dfs.namenode.name.dir
file:///home/“您的用户名”/hadoop
dfs.datanode.data.dir
file:///home/“您的用户名”/datanode
在此之后,通过
hdfs namenode-format
命令格式化您的namenode


我认为这将解决您的问题。

您的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>

dfs.namenode.name.dir
file:///home/“您的用户名”/hadoop
dfs.datanode.data.dir
file:///home/“您的用户名”/datanode
在此之后,通过
hdfs namenode-format
命令格式化您的namenode


我想这将解决您的问题。

您是否在core-site.xml中提到了name节点的地址localhost@siddharthajain是的,配置文件不是问题所在,因为守护进程是第一次启动的。您在core-site.xml中提到过name节点的地址吗localhost@siddharthajain对配置文件不是问题所在,因为守护进程是第一次启动的。我在问题中写道,如果我格式化namenode,那么守护进程将成功启动,但如果我在fs中执行类似于
copyFromLocal
的操作,那么问题再次出现。只有Thread在localhost上运行,但在hdfs和mapreduce上不运行。另外,不推荐使用
start all.sh
,您应该分别启动守护程序。我在问题中写道,如果我格式化namenode,则守护程序将成功启动,但如果我在fs中执行类似
copyFromLocal
的操作,则问题再次出现。仅在localhost上运行Thread,但在hdfs和mapreduce上不运行。另外,不推荐使用
start all.sh
,您应该分别启动守护进程。
 rm -Rf <tmp dir> (my was /usr/local/hadoop/tmp)
bin/hadoop namenode -format
bin/start-all.sh
<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>