Namenode没有开始

我在伪分布式模式下使用Hadoop,一切工作正常。 但之后我不得不重新启动我的电脑,因为某些原因。 而现在当我试图启动Namenode和Datanode时,我只能findDatanode正在运行。 谁能告诉我这个问题的可能原因? 还是我做错了什么?

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

我正面临着namenode的问题没有开始。 我发现一个解决scheme使用以下

  1. 首先删除临时文件夹中的所有内容: rm -Rf <tmp dir> (我是/ usr / local / hadoop / tmp)
  2. 格式化namenode: bin/hadoop namenode -format
  3. 再次启动所有进程: bin/start-all.sh

您可以考虑使用检查点回滚(如果启用了)。

core-site.xml中的/tmp/hadoop-${user.name} 默认为/tmp/hadoop-${user.name} ,每次重新启动后都会清空。 将其更改为其他一些在重新启动时无法清理的目录。

之后STEPS为hadoop 2.2.0工作,

第一步停止Hadoop

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

第2步删除tmp文件夹

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

第3步创build/ 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 

STEP 4格式的名称节点

 hduser@prayagupd$ hdfs namenode -format 

STEP 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 

在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数据不会被重新启动时被删除。

打开一个新的terminal并使用path-to-your-hadoop-install / bin / hadoop namenode来启动namenode

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

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

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

最后使用start-dfs.sh运行hdfs并使用jps检查服务。

为什么这里的大多数答案都假设所有数据都需要删除,重新格式化,然后重新启动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,并在假设某些内容被挂起或未执行之前检查日志。

在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工作

你改变了conf/hdfs-site.xml dfs.name.dir吗?

格式化namenode后,你改变它。

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

如果在重新启动系统后面临这个问题,那么下面的步骤将会正常工作

解决方法。

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

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

对于烫发修复: –

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

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

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

面临同样的问题。

(1)总是检查configuration.xml文件中的input错误,特别是xml标签。

(2)去目录。 并input./start-all.sh

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

在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},重启后会被删除。

尝试这个,

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

2)手动删除tmp文件夹

3)格式化namenode: hadoop namenode -format

4)启动所有进程: start-all.sh

如果在运行hadoop时保持默认configuration,则namenode的端口将是50070.您将需要find在此端口上运行的任何进程,并先杀掉它们。

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

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

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

  • sudo kill -9 <process_id> #kill_the_process

  • sudo rm -r /app/hadoop/tmp #删除临时文件夹

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

  • sudo chmod 777 –R /app/hadoop/tmp (仅供参考777)

  • bin/hadoop namenode –format #format hadoop namenode

  • bin/start-all.sh #启动所有hadoop服务

参考这个博客

对于我来说,我改变了hdfs-site.xml中的namenode和datanode的目录后,下面的工作

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

  1. 在新configuration的目录中,对于每个节点(namenode和datanode),删除其中的每个文件夹/文件(在我的情况下是“当前”目录)。
  2. 删除Hadoop临时目录: $rm -rf /tmp/haddop-$USER
  3. 格式化Namenode: hadoop/bin/hdfs namenode -format
  4. start-dfs.sh

在我遵循这些步骤之后,使用新configuration的目录,我的namenode和datanodes是活着的。

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

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

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

对于hadoop-2.7.3我只需要格式化namenode:

 <HadoopRootDir>/bin/hdfs namenode -format 

然后一个jps命令显示

 6097 DataNode 755 RemoteMavenServer 5925 NameNode 6293 SecondaryNameNode 6361 Jps 
 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 

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

如果你的namenode卡在安全模式,你可以SSH名字节点, su hdfs用户并运行以下命令closures安全模式:

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