hadoop学习笔记(一)RemoteException:could only be replicated to 0 nodes instead of minReplication (=1)

最近在学习hadoop的使用
从开始使用到现在一直都没出现过这种报错
在这里插入图片描述只是想要在hadoop上新建一个文件夹就报错name node is in safe mode
属实给我整懵逼了
我以为是我的集群最近开启-关闭的次数太多了出现了问题
于是又坚持不懈的再次开启
然后再次关闭(鬼知道我怎么想的,因为重启太多次导致的问题,我就要用重启来解决他?!!可能以毒攻毒的信念感太强了吧,就好像手机出问题了,我就会觉得重启手机,所有问题都会迎刃而解)
结果就是没啥用
于是我才开始尝试着去寻找解决办法
“name node is in safe mode”的提示意味着此时hdfs处于安全模式,只能对hdfs文件进行读操做
我根据网上的教程输入hadoop dfsadmin -safemode leave强制退出安全模式
hadoop学习笔记(一)RemoteException:could only be replicated to 0 nodes instead of minReplication (=1)_第1张图片短暂的成功了(因为根本问题没有解决,后面还是会报错)

随后我想实现将本地文件传输到hadoop集群上的操作
hdfs dfs -put /home/jasmine/FromOutside/XXX.txt /positions/02_4x/
结果发生报错
hadoop学习笔记(一)RemoteException:could only be replicated to 0 nodes instead of minReplication (=1)_第2张图片hadoop学习笔记(一)RemoteException:could only be replicated to 0 nodes instead of minReplication (=1)_第3张图片RemoteException:File /test.txt_COPYING_could only be replicated to 0 nodes instead of minReplication(=1).There are 1 datanode(s) running and 1 node(s) are exclued in this operation

针对这个报错,我搜了半天的解决方案
网上的教程多为这几种:
针对org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /home/input/qn_log.txt.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.的情况
(1)一般是说明你的datenode进程没有启动,应该是多次初始化之后namenode clusterID 与 datanode clusterID 不一致导致的问题。

针对 copyFromLocal: File /test/file/test.txt.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and 2 node(s) are excluded in this operation.
的情况

(1)防火墙没有关闭,需要关闭datanode的防火墙
(2)查看磁盘使用状况,出现类似下面的结果
Configured Capacity: 0 (0 B)
Present Capacity: 0 (0 B)
DFS Remaining: 0 (0 B)
DFS Used: 0 (0 B)
DFS Used%: NaN%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Datanodes available: 0 (0 total, 0 dead)

说明节点下存储空间都是空的
造成这个问题的原因可能是使用hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致,解决方案(全部网上搜的,自己没试过这个):
1、停止集群(切换到/sbin目录下)
$./stop-all.sh
2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
$ rm -rf /home/hadoop/hdpdata/*
3、重新格式化namenode(切换到hadoop目录下的bin目录下)
$ ./hadoop namenode -format
4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下)
$./start-all.sh
(3)是load的txt文件没有使用绝对路径——文件的绝对路径查询方式:

cd到txt文件的对应目录
pwd查看文件的绝对路径
将原load语句中"文件名.txt"替换为"绝对路径/文件.txt"再重新load即可

未解之谜
本来想尝试上面的第三个方法,所以退出进txt文件所在地重开了一个终端窗口,没死心鬼使神差的又输入了这个命令,结果直接成功了?????我不理解,我真的不太理解?有没有大佬可以帮我解惑啊!!!
hadoop学习笔记(一)RemoteException:could only be replicated to 0 nodes instead of minReplication (=1)_第4张图片

你可能感兴趣的:(hadoop,linux,python)