无法将文件写入hdfs - 在安全模式下获取错误hdfs

时间:2015-09-28 02:41:08

标签: hadoop hdfs cloudera-cdh

当我尝试将文件从local directory复制到HDFS时,我收到以下错误:

[cloudera@localhost ~]$ hadoop fs -copyFromLocal hello.txt /user/cloudera/my_data


copyFromLocal: Cannot create file/user/cloudera/my_data/hello.txt._COPYING_. Name node is in safe mode.

然后我执行了命令:

[cloudera@localhost ~]$ su
Password: 
[root@localhost cloudera]# hdfs dfsadmin -safemode leave
safemode: Access denied for user root. Superuser privilege is required

并进一步执行命令将文件存储到HDFS我收到同样的错误。

我再次执行命令:

[cloudera@localhost ~]$ su - root
Password: 
[root@localhost ~]# hdfs dfsadmin -safemode leave

我收到同样的错误。

我正在使用cloudera发布hadoop

3 个答案:

答案 0 :(得分:2)

来自apache文档here

  

在启动期间,NameNode从中加载文件系统状态   fsimage和编辑日志文件。然后它等待DataNodes报告   他们的块,以便它不会过早地开始复制   虽然群集中已存在足够的副本,但块仍然存在。中   这次NameNode保持在Safemode中。 NameNode的安全模式是   本质上是HDFS集群的只读模式,但它没有   允许对文件系统或块进行任何修改。通常是   NameNode在DataNode拥有后自动离开Safemode   据报道,大多数文件系统块都可用。如果需要,HDFS   可以使用bin / hadoop dfsadmin显式放入Safemode   -safemode命令。

在大多数情况下,该过程在HDFS启动后的合理时间内完成。但是,您可以通过以下命令强制HDFS退出安全模式:

hadoop dfsadmin -safemode leave

强烈建议运行fsck以从不一致状态恢复。

答案 1 :(得分:0)

Namenode有时会在重启后进入安全模式,如果等待一段时间(取决于块数),namenode将自动退出安全模式。

您可以使用hdfs dfsadmin -safemode leave命令强制执行相同操作,只有HDFS管理员用户可以执行此命令,因此在执行此命令之前切换到hdfs用户。

su hdfs

答案 2 :(得分:0)

尝试

 hadoop dfsadmin -safemode leave    

这应该有用......