Namenode没有开始

时间:2011-11-10 08:02:18

标签: hadoop hdfs

我在伪分布式模式下使用Hadoop,一切正常。但是由于某些原因我不得不重新启动计算机。现在,当我尝试启动Namenode和Datanode时,我发现只有Datanode正在运行。谁能告诉我这个问题的可能原因?或者我做错了什么?

我尝试了bin/start-all.shbin/start-dfs.sh

22 个答案:

答案 0 :(得分:97)

我遇到了namenode无法启动的问题。我找到了一个使用以下的解决方案:

  1. 首先删除临时文件夹中的所有内容:rm -Rf <tmp dir>(我的是/ usr / local / hadoop / tmp)
  2. 格式化namenode:bin/hadoop namenode -format
  3. 再次启动所有流程:bin/start-all.sh
  4. 您可以考虑使用检查点回滚(如果已启用它)。

答案 1 :(得分:36)

core-site.xml中的

hadoop.tmp.dirdefaulted/tmp/hadoop-${user.name},每次重启后都会清除它。将其更改为其他目录,该目录在重新启动时无法清除。

答案 2 :(得分:25)

以下 STEPS 使用hadoop 2.2.0为我工作,

第1步停止hadoop

hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/stop-dfs.sh

第2步删除tmp文件夹

hduser@prayagupd$ sudo rm -rf /app/hadoop/tmp/

第3步创建/ app / hadoop / tmp /

hduser@prayagupd$ sudo mkdir -p /app/hadoop/tmp
hduser@prayagupd$ sudo chown hduser:hadoop /app/hadoop/tmp
hduser@prayagupd$ sudo chmod 750 /app/hadoop/tmp

第4步格式namenode

hduser@prayagupd$ hdfs namenode -format

第5步启动dfs

hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/start-dfs.sh

第6步检查jps

hduser@prayagupd$ $ jps
11342 Jps
10804 DataNode
11110 SecondaryNameNode
10558 NameNode

答案 3 :(得分:4)

在conf / hdfs-site.xml中,您应该拥有类似

的属性
<property>
    <name>dfs.name.dir</name>
    <value>/home/user/hadoop/name/data</value>
</property>

属性“dfs.name.dir”允许您控制Hadoop写入NameNode元数据的位置。 给它另一个目录而不是/ tmp可以确保在重新启动时不会删除NameNode数据。

答案 4 :(得分:3)

打开一个新终端并使用 path-to-your-hadoop-install / bin / hadoop namenode

启动namenode

使用 jps 和namenode的检查应该正在运行

答案 5 :(得分:2)

为什么这里的大多数答案都假设需要删除所有数据,重新格式化,然后重新启动Hadoop? 我们怎么知道namenode没有进展,但是花了很多时间。 当HDFS中存在大量数据时,它将执行此操作。 在假设任何东西挂起或卡住之前检查日志中的进度。

$ [kadmin@hadoop-node-0 logs]$ tail hadoop-kadmin-namenode-hadoop-node-0.log

...
016-05-13 18:16:44,405 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 117/141 transactions completed. (83%)
2016-05-13 18:16:56,968 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 121/141 transactions completed. (86%)
2016-05-13 18:17:06,122 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 122/141 transactions completed. (87%)
2016-05-13 18:17:38,321 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 123/141 transactions completed. (87%)
2016-05-13 18:17:56,562 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 124/141 transactions completed. (88%)
2016-05-13 18:17:57,690 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 127/141 transactions completed. (90%)

这是在等待特定系统近一个小时之后。 每次我看它都在进步。 在启动系统并检查日志之前,请先耐心等待Hadoop,然后再假设某些内容挂起或没有进展。

答案 6 :(得分:1)

如果有人使用hadoop1.2.1版本但无法运行namenode,请转到core-site.xml,然后将dfs.default.name更改为fs.default.name

然后使用$hadoop namenode -format格式化namenode。

最后使用start-dfs.sh运行hdfs,并使用jps ..

检查服务

答案 7 :(得分:1)

在core-site.xml中:

    <configuration>
       <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
       </property>
       <property>
          <name>hadoop.tmp.dir</name>
          <value>/home/yourusername/hadoop/tmp/hadoop-${user.name}
         </value>
  </property>
</configuration>

和namenode格式:

hdfs namenode -format

为hadoop 2.8.1工作

答案 8 :(得分:0)

我遇到了同样的问题,名称节点不是从 Hadoop-3.2.1**** 版本开始的。我执行了解决问题的步骤:

  1. 从名称节点目录中删除临时文件夹中的内容。在我的情况下,root 用户创建的“当前”目录:rm -rf(目录名称)

  2. 格式化namenode:hdfs namenode -format

  3. 再次启动进程:start-dfs.sh

第 1 点在 hdfs-site.xml 文件中发生了变化。

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///opt/hadoop/node-data/hdfs/namenode</value>
</property>

答案 9 :(得分:0)

您可以使用以下命令重新启动namenode,而不是格式化namenode。它对我有用:

sudo service hadoop-master restart

  1. hadoop dfsadmin -safemode leave

答案 10 :(得分:0)

删除资源管理器的数据文件夹后,问题就消失了 即使你有格式也无法解决这个问题。

答案 11 :(得分:0)

I got the solution just share with you that will work who got the errors:

1. First check the /home/hadoop/etc/hadoop path, hdfs-site.xml and

 check the path of namenode and datanode 

<property>
  <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>

<property>
  <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>

2.Check the permission,group and user of namenode and datanode of the particular path(/home/hadoop/hadoopdata/hdfs/datanode), and check if there are any problems in all of them and if there are any mismatch then correct it. ex .chown -R hadoop:hadoop in_use.lock, change user and group

chmod -R 755 <file_name> for change the permission

答案 12 :(得分:0)

重启后我碰到了同样的事情。

对于hadoop-2.7.3,我所要做的就是格式化namenode:

<HadoopRootDir>/bin/hdfs namenode -format

然后jps命令显示

6097 DataNode
755 RemoteMavenServer
5925 NameNode
6293 SecondaryNameNode
6361 Jps

答案 13 :(得分:0)

我运行$hadoop namenode在前台手动启动namenode。

从日志中我发现50070是ocuupied,默认情况下由dfs.namenode.http-address使用。在hdfs-site.xml中配置dfs.namenode.http-address后,一切进展顺利。

答案 14 :(得分:0)

如果您的namenode卡在安全模式中,您可以ssh到namenode,su hdfs用户并运行以下命令来关闭安全模式:

hdfs dfsadmin -fs hdfs://server.com:8020 -safemode leave

答案 15 :(得分:0)

在core-site.xml中添加 hadoop.tmp.dir 属性

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/yourname/hadoop/tmp/hadoop-${user.name}</value>
  </property>
</configuration>

并格式化hdfs(hadoop 2.7.1):

$ hdfs namenode -format

core-default.xml中的默认值为/tmp/hadoop-${user.name},重启后将删除。

答案 16 :(得分:0)

对我来说,在更改namenode的目录后,以下工作正常 和hdfs-site.xml

中的datanode

- 在执行以下步骤之前,使用stop-all.sh停止所有服务,或者在我的情况下,我使用stop-dfs.sh来停止dfs

  1. 在新配置的目录中,对于每个节点(namenode和datanode),删除其中的每个文件夹/文件(在我的情况下是'当前'目录)。
  2. 删除Hadoop临时目录:$rm -rf /tmp/haddop-$USER
  3. 格式化Namenode:hadoop/bin/hdfs namenode -format
  4. start-dfs.sh
  5. 在我按照这些步骤操作后,我的namenode和datanode仍在使用新配置的目录。

答案 17 :(得分:0)

面临同样的问题。

(1)在配置.xml文件时,请务必检查输入错误,尤其是xml标签。

(2)转到 bin 目录。并输入./start-all.sh

(3)然后键入jps,以检查进程是否正常工作

答案 18 :(得分:0)

试试这个,

1)停止所有hadoop进程:stop-all.sh

2)手动删除tmp文件夹

3)格式名称节点:hadoop namenode -format

4)开始所有流程:start-all.sh

答案 19 :(得分:0)

如果您在重新启动系统后遇到此问题,则以下步骤将正常运行

解决方法。

1)格式化namenode:bin/hadoop namenode -format

2)再次启动所有流程:bin/start-all.sh

对于Perm修复: -

1)转到/conf/core-site.xml将fs.default.name更改为自定义的。

2)格式化namenode:bin/hadoop namenode -format

3)再次启动所有流程:bin/start-all.sh

答案 20 :(得分:0)

如果在运行hadoop时保留默认配置,则namenode的端口将为50070.您需要找到在此端口上运行的任何进程并首先终止它们。

  • 停止所有正在运行的hadoop:bin/stop-all.sh

    检查在端口50070中运行的所有进程

  • sudo netstat -tulpn | grep :50070 #check运行中的所有进程 端口50070,如果有任何/将 出现在输出的RHS上。

  • sudo kill -9 <process_id> #kill_the_process

  • sudo rm -r /app/hadoop/tmp #delete temp文件夹

  • sudo mkdir /app/hadoop/tmp #recreate it

  • sudo chmod 777 –R /app/hadoop/tmp(777仅用于此示例目的)

  • bin/hadoop namenode –format #format hadoop namenode

  • bin/start-all.sh #start-all hadoop services

参考this blog

答案 21 :(得分:0)

您是否更改了conf/hdfs-site.xml dfs.name.dir

更改后格式化namenode。

$ bin/hadoop namenode -format
$ bin/hadoop start-all.sh