名称节点处于安全模式。无法离开
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 dfsadmin
和 hadoop 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 离开
【讨论】:
以上是关于名称节点处于安全模式。无法离开的主要内容,如果未能解决你的问题,请参考以下文章