名称节点处于安全模式。无法离开

Posted

技术标签:

【中文标题】名称节点处于安全模式。无法离开【英文标题】:Name node is in safe mode. Not able to leave 【发布时间】:2013-03-26 01:24:24 【问题描述】:
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

【问题讨论】:

hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode 可能会有所帮助。 就我而言,它在安全节点中,因为资源不足(在 docker 上运行) @BrendenBrown,这里是 Hadoop 3.2.0 的当前工作链接:hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/… 这是 Hadoop «stable»(当前为 2.9.x)的当前工作链接:hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/… 链接unmeshasreeveni.blogspot.in/2014/04/…已失效,我将其编辑掉 【参考方案1】:

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

 bin/hadoop dfsadmin -safemode leave

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

在上述命令之后,我建议您运行一次hadoop fsck,以便解决 hdfs 中出现的任何不一致问题。

更新:

对于较新的发行版,使用 hdfs 命令而不是 hadoop 命令。 hadoop 命令已被弃用:

hdfs dfsadmin -safemode leave

hadoop dfsadminhadoop fs 命令已被弃用,所有与 hdfs 相关的任务都被移至单独的命令 hdfs

【讨论】:

究竟为什么会显示'namenode is in safemode' 基本上namenode在不寻常的情况下进入安全模式,例如当磁盘已满时,也在启动阶段。在这里阅读更多; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode 我正在使用 Hadoop 2.0.0-cdh4.1.1 当我运行 hadoop dfsadmin 命令时,它给了我这个:______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ...但仍然运行。似乎下面@user3316017 的建议是推荐的语法。 根据新发行版更新了我的答案,如果有人可以帮助我们建立 apache hadoop 的确切版本,因为当这些弃用出现时,那就太好了。 对于由于集群已满而在运行hdfs dfsadmin -safemode leave 命令后HDFS 再次进入安全模式的情况,有时可以通过立即链接清理命令来摆脱这种情况向上的东西,例如hdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete【参考方案2】:

试试这个,它会起作用的

sudo -u hdfs hdfs dfsadmin -safemode leave

【讨论】:

这个命令对我有用,因为它可能需要超级用户权限..thanks @wesam【参考方案3】:

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

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- 链接

【讨论】:

关于 Hadoop 安全模式的文档链接:hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…【参考方案4】:

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

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

检查名称节点状态

$ hdfs dfsadmin -safemode get

进入安全模式:

$ hdfs dfsadmin -safemode enter

离开安全模式

~$ hdfs dfsadmin -safemode leave

【讨论】:

强制离开安全模式:~$ hdfs dfsadmin -safemode forceExit【参考方案5】:

如果您使用上面的 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>

【讨论】:

【参考方案6】:

试试这个

sudo -u hdfs hdfs dfsadmin -safemode leave

检查安全模式的状态

sudo -u hdfs hdfs dfsadmin -safemode get

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

df -h

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

【讨论】:

【参考方案7】:

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

hadoop dfsadmin -safemode leave

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

go to >>Actions>>Leave Safemode

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

free -m

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

【讨论】:

【参考方案8】:

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

sudo -u hdfs hadoop dfsadmin -safemode leave

【讨论】:

【参考方案9】:

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

$> hdfs dfsadmin -safemode 离开

【讨论】:

以上是关于名称节点处于安全模式。无法离开的主要内容,如果未能解决你的问题,请参考以下文章

hive的hiveserver2模式启动不起来,发现Hadoop一直处于安全模式

Namenode名字节点

HDFS安全模式

HDFS的安全模式

hdfs功能详解介绍(2)

hadoop退出安全模式