上传文件到HDFS的时候报错
_COPYING_ could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and 0 node(s) are excluded in this operation.
解决
原因似乎是因为datanode没有启动,查了解决方法,最终stakeoverflow的回答解决了问题,具体操作如下
STEP 1 : stop hadoop and clean temp files from hduser
sudo rm -R /tmp/*
also, you may need to delete and recreate /app/hadoop/tmp (mostly when I change hadoop version from 2.2.0 to 2.7.0)
sudo rm -r /app/hadoop/tmp
sudo mkdir -p /app/hadoop/tmp
sudo chown hduser:hadoop /app/hadoop/tmp
sudo chmod 750 /app/hadoop/tmp
STEP 2: format namenode
./bin/hdfs namenode -format
据说这个时候便可以看到datanode:
hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager
但是我这里显示只有jps和datanode,先不管这么多,执行之前出错的上传命令试试,发现报错:
put: Cannot create file/user/hadoop/input/myLocalFile.txt._COPYING_. Name node is in safe mode.
发现namenode在安全模式中,执行
bin/hadoop dfsadmin -safemode leave
解除安全模式,再次执行上传命令,即可上传成功。
至此,问题解决。
此时jps仍然只有jps和datanode
hadoop@Darius:/usr/local/hadoop$ jps
15040 Jps
13405 DataNode
更新
又遇到了datanode无法重启的问题
这次是参考博客,感觉这个方法更简单一些,但是会全部清除所有数据:
# 关闭
./sbin/stop-dfs.sh
# 删除tmp文件
rm -rf ./tmp
# 重新格式化
./bin/hdfs namenode -format
# 重启
./sbin/start-dfs.sh
之后再在hdfs上操作的时候,参考厦大林子雨HDFS文件操作建个人目录后进行其他操作即可,注意不要直接复制这个操作里面的命令到shell中,会运行不起来。