当我尝试将文件从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
。
答案 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
这应该有用......