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.
Run Code Online (Sandbox Code Playgroud)
无法在hdfs中创建任何内容
我做到了
root# bin/hadoop fs -safemode leave
Run Code Online (Sandbox Code Playgroud)
但显示
safemode: Unknown command
Run Code Online (Sandbox Code Playgroud)
问题是什么?
Ama*_*mar 203
为了强制让namenode离开safemode,应该执行以下命令:
bin/hadoop dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
您Unknown command的命令会收到错误,因为-safemode它不是子命令hadoop fs,但它是hadoop dfsadmin.
在上面的命令之后,我建议你一旦运行,hadoop fsck以便hdfs中任何不一致的地方可能会被整理出来.
更新:
对于较新的分发,请使用hdfs命令而不是hadoop命令.该hadoop命令已被弃用:
hdfs dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
hadoop dfsadmin已被弃用,hadoop fs命令也是如此,所有与hdfs相关的任务都被移动到单独的命令中hdfs.
Wes*_* Na 27
试试这个,它会奏效
sudo -u hdfs hdfs dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
Kis*_*n B 21
该命令对我不起作用,但以下情况确实如此
hdfs dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
我使用hdfs命令而不是hadoop命令.
小智 9
安全模式开启意味着(HDFS 处于只读模式)
安全模式关闭意味着(HDFS 处于可写和可读模式)
在 中Hadoop 2.6.0,我们可以借助以下命令检查名称节点的状态:
检查名称节点状态
$ hdfs dfsadmin -safemode get
Run Code Online (Sandbox Code Playgroud)
进入安全模式:
$ hdfs dfsadmin -safemode enter
Run Code Online (Sandbox Code Playgroud)
离开安全模式
~$ hdfs dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
如果你使用上面的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>
Run Code Online (Sandbox Code Playgroud)
Namenode 在内存不足时进入安全模式。因此,HDFS 变为只读。这意味着不能在 HDFS 中创建任何额外的目录或文件。要退出安全模式,请使用以下命令:
hadoop dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 cloudera 管理器:
go to >>Actions>>Leave Safemode
Run Code Online (Sandbox Code Playgroud)
但它并不总是能解决问题。完整的解决方案在于在内存中腾出一些空间。使用以下命令检查您的内存使用情况。
free -m
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 cloudera,您还可以检查 HDFS 是否显示出一些健康状况不佳的迹象。它可能必须显示一些与 namenode 相关的内存问题。按照可用选项分配更多内存。如果您不使用 cloudera manager,我不确定要使用哪些命令,但必须有办法。希望能帮助到你!:)
尝试这个
sudo -u hdfs hdfs dfsadmin -safemode leave
Run Code Online (Sandbox Code Playgroud)
检查安全模式的状态
sudo -u hdfs hdfs dfsadmin -safemode get
Run Code Online (Sandbox Code Playgroud)
如果它仍然处于安全模式,那么原因之一可能是节点中没有足够的空间,您可以使用以下命令检查节点磁盘的使用情况:
df -h
Run Code Online (Sandbox Code Playgroud)
如果根分区已满,请删除文件或在根分区中添加空间,然后重试第一步。
| 归档时间: |
|
| 查看次数: |
179965 次 |
| 最近记录: |