问题描述
当启动hadoop集群的时候,没有报错,进入hadoop:50070端口也正常,但是在Summary中,安全模式提示为on。不知为何。。。。
当启动hive的时候,会报错:namenode safemode is on
然后看其他博客说是因为集群断电、重启等原因导致很多块文件丢失,类似于在Summary中这样的提示:
Safe mode is ON. The reported blocks 0 needs additional 526 blocks to reach the threshold 0.9990 of
解决办法(暴力解决)
其实我也不清楚为什么会丢失这么多文件,只好将这些损坏的块清空,才能正常使用namenode
使用以下命令清空损坏的block:
# 先启动hdfs之后,退出安全模式
hadoop dfsadmin -safemode leave
# 删除损坏的块文件
hdfs fsck / -delete
对于hdfs fsck命令,有以下注释:
HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block块信息和位置信息等。
具体命令介绍:
-move: 移动损坏的文件到/lost+found目录下
-delete: 删除损坏的文件
-openforwrite: 输出检测中的正在被写的文件
-list-corruptfileblocks: 输出损坏的块及其所属的文件
-files: 输出正在被检测的文件
-blocks: 输出block的详细报告 (需要和-files参数一起使用)
-locations: 输出block的位置信息 (需要和-files参数一起使用)
-racks: 输出文件块位置所在的机架信息(需要和-files参数一起使用)