130
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

问题是什么?

解决方案:http ://unmeshasreeveni.blogspot.com/2014/04/name-node-is-in-safe-mode-how-to-leave.html?m=1

4

9 回答 9

222

为了强制让namenode离开安全模式,应该执行以下命令:

 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

于 2013-04-04T06:04:46.877 回答
30

试试这个,它会工作

sudo -u hdfs hdfs dfsadmin -safemode leave
于 2015-01-03T10:53:36.757 回答
21

The Command did not work for me but the following did

hdfs dfsadmin -safemode leave

I used the hdfs command instead of the hadoop command.

Check out http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe-mode- link too

于 2014-02-23T11:39:58.150 回答
11

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

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

检查名称节点状态

$ hdfs dfsadmin -safemode get

进入安全模式:

$ hdfs dfsadmin -safemode enter

离开安全模式

~$ hdfs dfsadmin -safemode leave
于 2018-09-12T02:45:57.013 回答
8

如果您使用上面的 Hadoop 版本 2.6.1,当该命令有效时,它会抱怨它已贬值。我实际上无法使用,hadoop dfsadmin -safemode leave因为我在 Docker 容器中运行 Hadoop,并且该命令在容器中运行时神奇地失败了,所以我所做的就是这样。我检查了文档并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>
于 2015-11-19T09:46:21.997 回答
6

尝试这个

sudo -u hdfs hdfs dfsadmin -safemode leave

检查安全模式的状态

sudo -u hdfs hdfs dfsadmin -safemode get

如果它仍处于安全模式,则原因之一是节点空间不足,您可以使用以下命令检查节点磁盘使用情况:

df -h

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

于 2017-11-21T14:24:45.400 回答
5

Namenode 在内存不足时进入安全模式。结果,HDFS 变得只读。这意味着不能在 HDFS 中创建任何额外的目录或文件。要退出安全模式,请使用以下命令:

hadoop dfsadmin -safemode leave

如果您使用的是 cloudera 管理器:

go to >>Actions>>Leave Safemode

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

free -m

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

于 2014-09-24T06:15:37.947 回答
1

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

sudo -u hdfs hadoop dfsadmin -safemode leave
于 2017-08-23T05:43:16.200 回答
0

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

$> hdfs dfsadmin -safemode 离开

于 2017-09-14T06:47:15.440 回答