环境信息:
Master:172.17.1.101
Slave1:172.17.1.102
Slave1:172.17.1.103
Exception in thread "main" org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: Access denied for user hadoop. Superuser privilege is required
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkSuperuserPrivilege(FSPermissionChecker.java:85)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkSuperuserPrivilege(FSNamesystem.java:5742)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.datanodeReport(FSNamesystem.java:4638)
at org.apache.hadoop.hdfs.server.namenode.NameNode.getDatanodeReport(NameNode.java:954)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
hadoop fs -put /opt/test.txt /opt/data/ 这个可以顺利执行
防火墙关了;也重新Format试过了,都不行
附件里含有日志和错误信息
我看你的hadoop-hadoop-namenode-master.log中日志文件中有错误:
[code="java"]2014-08-08 21:20:24,154 INFO org.apache.hadoop.hdfs.server.common.Storage: Cannot lock storage /opt/hadoop-1.2.1/tmp/dfs/name. The directory is already locked.
2014-08-08 21:20:24,157 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.IOException: Cannot lock storage /opt/hadoop-1.2.1/tmp/dfs/name. The directory is already locked.
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.lock(Storage.java:599)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:452)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:299)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.(FSNamesystem.java:395)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299)
at org.apache.hadoop.hdfs.server.namenode.NameNode.(NameNode.java:569)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488)[/code]
楼主使用 ./hadoop namenode -format 命令是格式化命名空间,一定是在未启动 hadoop 服务的时候才能执行。出现这个错误提示有可能是因为 hadoop 的服务是子运行状态。是因为没有关闭hadoop就开始format,sh stop-all.sh 后 再format试试