Hadoop常见错误之HDFS

下面小编整理在工作中遇到的问题,以及解决方法。
1,Datanode启动失败错误
现象
在启动Datanode时,/var/log/hadoop-hdfs/hadoop-cmf-hdfs-DATANODE-cdh-node12.grc.log.out日志文件中有如下错误:

Caught exception while scanning /data/dfs/dn/current. Will throw later.
ExitCodeException exitCode=1: du: cannot access `/data/dfs/dn/current/BP-2133512689-10.51.120.52-1428486453738/current/finalized/subdir15/subdir1/blk_1074725217': Input/output error
du: cannot access `/data/dfs/dn/current/BP-2133512689-10.51.120.52-1428486453738/current/finalized/subdir15/subdir1/blk_1074725217_985023.meta': Input/output error
。。。。。。
Failed to analyze storage directories for block pool BP-2133512689-10.51.120.52-1428486453738
java.io.IOException: BlockPoolSliceStorage.recoverTransitionRead: attempt to load an used block storage: /data/dfs/dn/current/BP-2133512689-10.51.120.52-1428486453738
    at org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage.loadBpStorageDirectories(BlockPoolSliceStorage.java:210)
    。。。。。。
FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to cdh-node3.grc/10.51.120.53:8022. Exiting. 
java.io.IOException: All specified directories are failed to load.

分析过程
用root用户登录Datanode节点,进入“/data/dfs/dn/current/BP-2133512689-10.51.120.52-1428486453738/current/finalized/subdir15/subdir1”目录,

[root@cdh-node12 subdir1]# ll
ls: 无法访问blk_1074725217: 输入/输出错误
ls: 无法访问blk_1074725217_985023.meta: 输入/输出错误
总用量 0
-????????? ? ? ? ?            ? blk_1074725217
-????????? ? ? ? ?            ? blk_1074725217_985023.meta

猜测是文件系统损坏了。
解决方法
猜测可能是因为文件系统损坏了,而导致有些数据块不能正常访问。需要执行fsck命令修复文件系统。 由于执行fsck之前,需要先umount对应的挂载点,而我这个Datanode节点损坏文件夹挂在根目录下,所以我这里先reboot Datanode节点。
在reboot后,有如下提示信息:
这里写图片描述

按照提示,输入root用户密码,并执行如下命令:

fsck -y /dev/mapper/vg_cdhnode12_lv_root 

执行完之后,重新reboot机器,问题解决。但是/data/dfs/dn/current/BP-2133512689-10.51.120.52-1428486453738/current/finalized/subdir15/subdir1目录下的blk_1074725217和blk_1074725217_985023.meta文件被删除了,不知这个文件删除是否会影响数据的完整性。如果按照Datanode的复制原则,我设置了3个复制因子,应该这个block的数据存储在另外两个Datanode节点中。

展开阅读全文

没有更多推荐了,返回首页