名称节点处于安全模式。不能离开

时间:2013-04-04 05:34:52

标签: hadoop hdfs

root# bin/hadoop fs -mkdir t
mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.

无法在hdfs中创建任何内容

我做了

root# bin/hadoop fs -safemode leave

但显示

safemode: Unknown command

问题是什么?

Solution

9 个答案:

答案 0 :(得分:198)

为了强制让namenode离开safemode,应该执行以下命令:

 bin/hadoop dfsadmin -safemode leave

您的命令出现Unknown command错误,因为-safemode不是hadoop fs的子命令,但它是hadoop dfsadmin

同样在上面的命令之后,我建议你运行一次hadoop fsck,这样就可以解决hdfs中出现的任何不一致问题。

<强>更新

对较新的发行版使用hdfs命令而不是hadoop命令。不推荐使用hadoop命令:

hdfs dfsadmin -safemode leave

hadoop dfsadmin已被弃用,hadoop fs命令也被弃用,所有与hdfs相关的任务都被移动到单独的命令hdfs

答案 1 :(得分:27)

试试这个,它会起作用

sudo -u hdfs hdfs dfsadmin -safemode leave

答案 2 :(得分:21)

命令对我不起作用,但以下做了

hdfs dfsadmin -safemode leave

我使用hdfs命令而不是hadoop命令。

也可以查看http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe-mode-链接

答案 3 :(得分:6)

如果你使用上面的Hadoop版本2.6.1,当命令工作时,它会抱怨它的折旧。我实际上无法使用hadoop dfsadmin -safemode leave,因为我在Docker容器中运行Hadoop,并且该命令在容器中运行时神奇地失败,所以我所做的就是这个。我查看了doc并在文档中找到了dfs.safemode.threshold.pct

  

指定应满足最小值的块的百分比   dfs.replication.min定义的复制要求。价值减去   大于或等于0表示不等待任何特定百分比   在退出安全模式之前阻塞。大于1的值将是安全的   模式永久性。

所以我将hdfs-site.xml更改为以下内容(在较旧的Hadoop版本中,显然您需要在hdfs-default.xml中执行此操作:

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>

答案 4 :(得分:5)

试试这个

sudo -u hdfs hdfs dfsadmin -safemode leave

检查safemode的状态

sudo -u hdfs hdfs dfsadmin -safemode get

如果它仍处于安全模式,那么其中一个原因是节点空间不足,您可以使用以下方法检查节点磁盘使用情况:

df -h

如果root分区已满,请删除文件或在根分区中添加空间,然后重试第一步。

答案 5 :(得分:4)

当内存不足时,Namenode进入安全模式。结果,HDFS变得只有可读性。这意味着无法在HDFS中创建任何其他目录或文件。要退出安全模式,使用以下命令:

hadoop dfsadmin -safemode leave

如果您使用的是cloudera经理:

go to >>Actions>>Leave Safemode

但它并不总能解决问题。完整的解决方案在于在内存中留出一些空间。使用以下命令检查内存使用情况。

free -m

如果您使用的是cloudera,您还可以检查HDFS是否显示出一些健康状况不佳的迹象。它可能必须显示与namenode相关的一些内存问题。按照可用选项分配更多内存。如果您不使用cloudera管理器,我不确定要使用哪些命令,但必须有一种方法。希望能帮助到你! :)

答案 6 :(得分:3)

安全模式开启(HDFS处于只读模式)
安全模式关闭意味着(HDFS处于可读写模式)

Hadoop 2.6.0中,我们可以借助以下命令检查名称节点的状态:

检查名称节点状态

$ hdfs dfsadmin -safemode get

进入安全模式:

$ hdfs dfsadmin -safemode enter

离开安全模式

~$ hdfs dfsadmin -safemode leave

答案 7 :(得分:1)

使用HDFS OS用户运行以下命令以禁用安全模式:

{{1}}

答案 8 :(得分:0)

使用以下命令关闭安全模式

$&GT; hdfs dfsadmin -safemode leave