hadoop 提交时 Safe mode is ON. Resources are low on NN 问题解决方案

先前在hadoop集群跑job时出现任务执行到30%停止,且机器发热严重,一度以为机器问题,而后在集群提交作业时,出现如下问题,namenode节点资源不足,请释放资源或增加资源。

705013485_0008. Name node is in safe mode.
Resources are low on NN. Please add or free up more resources then turn off safe mode manually. NOTE:  If you turn off safe mode before adding resources, the NN will immediately return to safe mode. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.

看了网上很多贴子,只是说怎么查看存储空间占用情况,未明确如何查找原因及解决,特发此贴

  • 问题产生的原因

可以使用df -h命令查看下当前节点下的存储情况,如下可见,以用91%。结合先前的job运算失败,考虑到应该是产生了大量的文件存储在节点上,导致空间不足,所以就需要到运行任务的data下去查看文件信息。我是使用mapreduce运行的程序,因此到hadoop的data数据中去查看文件大小。

文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        47G   40G  4.0G   91% /
devtmpfs        3.9G     0  3.9G    0% /dev
tmpfs           3.9G     0  3.9G    0% /dev/shm
tmpfs           3.9G   12M  3.8G    1% /run
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1       976M  104M  806M   12% /boot
tmpfs           781M     0  781M    0% /run/user/1000
tmpfs           781M     0  781M    0% /run/user/0
  • 问题确认:

使用 du -s ./* | sort -rn^C 对hadoop的data中的文件大小进行排序,如下可知/data的文件大小达到了37G,这是不合理的,问题指定在此目录下,因此不断进入此目录,并使用du -s ./* | sort -rn^C 对可疑文件进行定位。最终找到问题文件如下:subdir9 和subdir8 明显异常,就是上次job失败产生的文件。

[root@hadoop102 hadoop-3.1.3]# du -s ./* | sort -rn
37391092	./data
861736	./share
219308	./mydata
23020	./logs
22600	./lib
1000	./bin
252	./libexec
188	./etc
180	./sbin
144	./LICENSE.txt
68	./include
56	./input
24	./NOTICE.txt
16	./output
4	./README.txt
[root@hadoop102 subdir0]# du -s ./* | sort -rn
20722616	./subdir9
16439000	./subdir8
22976	./subdir7
2424	./subdir6
1524	./subdir0
1420	./subdir2
1248	./subdir5
1248	./subdir4
1124	./subdir1
1076	./subdir3
  • 问题解决:

方式一:在hdfs集群上找到对应的文件目录,手动退出安全模式,然后将目录通过集群删除。

方式二:将有异常的两个目录直接干掉,然后df -h查看,以用已经降低到19%。该解决方式会导致后续启动集群时,因为块数据丢失处于安全模式,需手动退出安全模式。若出现此类问题,可以使用如下方式解决

[root@hadoop102 subdir0]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        47G  8.3G   36G   19% /
devtmpfs        3.9G     0  3.9G    0% /dev
tmpfs           3.9G     0  3.9G    0% /dev/shm
tmpfs           3.9G   12M  3.8G    1% /run
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1       976M  104M  806M   12% /boot
tmpfs           781M     0  781M    0% /run/user/1000

方式二产生问题解决

      步骤 1     执行命令退出安全模式:hadoop dfsadmin -safemode leave

      步骤 2     执行健康检查,删除损坏掉的block。  hdfs fsck  /  -delete

方式二问题解决参考:https://blog.csdn.net/mnasd/article/details/82143653

 

你可能感兴趣的:(常见问题,hadoop,大数据,hdfs,linux)