Hadoop 解除 “Name node is in safe mode”

2019-03-28 13:45|来源: 网络

运行Hadoop程序时,有时候会报以下错误:

org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name

node is in safe mode

这个错误应该还满常见的吧(至少我运行的时候是这样的)

那我们来分析下这个错误,从字面上来理解:

Name node is in safe mode

说明Hadoop的NameNode处在安全模式下。

那什么是Hadoop的安全模式呢?

在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。

运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

现在就清楚了,那现在要解决这个问题,我想让Hadoop不处在safe mode 模式下,能不能不用等,直接解决呢?

答案是可以的,只要在Hadoop的目录下输入:

hadoop@hadoop-master:~$ hadoop dfsadmin -safemode leave

更多Hadoop相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

相关问答

更多
  • 再等等吧,namenode刚启动时候会做一些事情,文件分片整理之类乱七八糟的,正常情况下过了一段时间后会自动离开safemode。要是一直离不开,你就hadoop fsck看看有没有文件损坏了。
  • 日志文件通常在$HADOOP_HOME/logs , $HADOOP_HOME是你的hadoop安装目录。 您可以查看这两个日志文件: 您的namenode运行的节点中的hadoop-USERNAME-namenode-HOSTNAME.log hadoop-USERNAME-datanode-HOSTNAME.log ,它位于您启动新添加的datanode的节点中。 USERNAME和HOSTNAME是用于运行hadoop的用户名,以及节点的主机名。 The log files are usually i ...
  • Matthew Buckett对HADOOP-7489的建议为我工作。 将以下内容添加到hadoop-env.sh文件中: export HADOOP_OPTS="-Djava.security.krb5.realm=OX.AC.UK -Djava.security.krb5.kdc=kdc0.ox.ac.uk:kdc1.ox.ac.uk" Matthew Buckett's suggestion in HADOOP-7489 worked for me. Add the following to you ...
  • 为了强制让namenode离开safemode,应执行以下命令: bin/hadoop dfsadmin -safemode leave 您的Unknown command将收到Unknown command错误,因为-safemode不是hadoop fs的子命令,而是hadoop dfsadmin 。 此外,在上述命令之后,我建议您一次运行hadoop fsck以便hdfs中的任何不一致性可能会被排除。 更新: 对于较新的发行版使用hdfs命令而不是hadoop命令。 hadoop命令已被弃用: h ...
  • 复制因子不能为集群中的任何特定节点设置,您可以为整个集群/目录/文件进行设置。 可以在hdfs-sie.xml的运行群集中更新dfs.replication。 设置hadoop dfs -setrep -w file-path的复制因子 或者为目录或整个hadoop fs -setrep -R -w 1 /递归设置 - hadoop fs -setrep -R -w 1 / 使用最小和最大rep因子 - 在将数据写入datanode的同时,很可能很多datanode可能会失败。 如 ...
  • Hadoop有asm 3.2而我使用的是ASM 5.在ASM5中,ClassVisitor是一个超类,而在3.2中它是一个接口。 出于某种原因,错误是Throwable(信任Shevek),catch块只捕获异常。 任何hadoop日志都没有捕获throwable错误。 因此,调试非常困难。 使用jar jar链接修复asm版本问题,现在一切正常。 如果你正在使用Hadoop并且某些东西不起作用并且没有日志显示任何错误,那么请尝试抓住Throwable。 阿伦 Hadoop had asm 3.2 and ...
  • 在hadoop的不同节点上的安装应该几乎相同,因此,您必须在群集的每个节点中指定HADOOP_HOME(我还指定HADOOP_PREFIX到同一位置)指向您的hadoop安装。 您的每个节点都应该能够通过ssh“无密码”模式相互连接,所以我相信你问题的最后一部分没有多大意义;) The installation on your different nodes of hadoop should be almost identical, and for that reason, you must specify ...
  • 尝试发布命令 hadoop dfsadmin -safemode leave 如果成功,您可能会收到“安全模式关闭” The HDFS was unavailable. The logs were stating that a certain directory was damaged, rendering it unreadable. I had to shut down the NameNode, format it with hadoop namenode -format, and restart ...
  • 在启动后namenode脱离安全模式之前,Job正在启动。 在namenode离开safemode后启动作业将解决此问题。 Job is being kicked off before namenode is out of safemode after startup. Starting job after namenode leaves safemode will fix the issue.
  • 这是否始终发生或者仅在开始时才开始hadoop? 如果只是在开始时,然后等待一段时间,以便NameNode在访问hdfs之前检查一切是否正常。 如果它在相当长的时间后没有离开安全模式,那意味着文件系统存在一些不平衡(例如在复制或损坏的块下)。 在一段时间后,复制块将自动保持平衡。 对于损坏的块,你可以看看这个命令的输出: hdfs fsck -list-corruptfileblocks 并尝试使用以下命令删除损坏的块: hdfs fsck / -delete 如果这无助于@Nishu的建议,请使用hdfs ...