看了网上的很多说法感觉不太对,有的人说要去重新格式化datanode,重新格式化namenode,但是这是生产环境,重新格式化根本不可能,想都不敢想,只能去解决,先看datanode的日志信息,根据日志信息去确定解决方案,由于日志当时没保留就不进行展示了。
环境配置:
datanode节点配置为三台16c64G,2T数据盘虚拟机,由于集群中小文件过多,100G数据中文件数为600万个小文件,在执行sql语句时经常将dn节点打full gc,于是就是改了datanode的内存,但是在更改后的本地配置文件中更改内存参数后重启datanode节点是直接通过kill -9的方式杀死dn进程 ,不是通过hadoop集群自己本身的启停脚本去进行的停服。
相当于直接在服务器执行kill命令,然后去重新拉起datanode服务,但是由于将多个datanode重新进行了jvm内存参数的调整,都进行了服务的重启,namenode与datanode之间的注册出现了问题,namenode的webui页面显示数据存储为0,识别到的datanode主机为0,在服务器端使用命令:
[root@cdh01 ~]# hdfs dfsadmin -report
Configured Capacity: 127498243278 (0 GB)
Present Capacity: 81648974406 (0 GB)
DFS Remaining: 75599862342 (0 GB)
DFS Used