1.先检查zookeeper启动是否正常,配饰是否正确
2.重启启动namenode和zkfc
3.如果没有恢复正常,在namenode上面执行bin/hdfs haadmin -transitionToActive nn2
其中nn2是你的namenode中的一个(如果是新配置的HAhadoop集群,可能是zkfc(DFSZKFailoverController)没有格式化导致namenode节点的自动切换机制没有开启)
当 hdfs的NameNode节点启动时,会进入安全模式阶段。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。
在此阶段,NameNode加载fsimage(Filesystem image:文件meta信息的持久化的检查点)文件到内存中,然后在editlog中执行相应的 *** 作。加载fsimage文件包含文件metadata信息,但是不包含文件块位置的信息。
DataNode启动的时候扫描本地磁盘,保存的block信息,然后将这些信息汇报给NameNode,让 NameNode得到块的位置信息,并对每个文件对应的数据块副本进行统计。
如果hdfs数据量很大时,进入至退出安全模式时间较长。
三、安全模式退出条件当最小副本条件满足时,即一定比例(dfs.safemode.threshold.pct缺省值0.999f)的数据块都达到最小副本数,系统就会退出安全模式。当最小副本条件未达到要求时,就会对副本数不足的数据块安排DataNode进行复制,直至达到最小副本数。如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。而在安全模式下,系统会处于只读状态,NameNode不会处理任何块的复制和删除命令。
dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元 数据 记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
四、修复hdfs1、手动修复:
#首先检查哪些数据块丢失了 hdfs fsck / # 修复指定路径的hdfs文件,尝试多次 hdfs debug recoverLease -path 文件位置 -retries 重试次数
此时,hdfs就能被修复了,切记不要使用hdfs fsck / -delete 命令,它是删除所有损坏的块的数据文件,会导致数据彻底丢失,当然若只有一个副本,或所有副本均已经损坏,则可以执行此命令。
2、自动修复
hdfs当然会自动修复损坏的数据块,当数据块损坏后,DN节点执⾏directoryscan(datanode进行内存和磁盘数据集块校验) *** 作之前,都不会发现损坏;也就是directoryscan *** 作校验是间隔6h
dfs.datanode.directoryscan.interval : 21600
在DN向NN进⾏blockreport前,都不会恢复数据块;也就是blockreport *** 作是间隔6h
dfs.blockreport.intervalMsec : 21600000
最终当NN收到blockreport才会进⾏恢复 *** 作
生产中倾向于使用手动修复的方法去修复损坏的数据块。
五、清理损坏的数据块,可能会导致丢失数据丢失,上面步骤三没有回复的情况下,采用步骤四因为机器断电或意外崩溃,在内存中未写入的数据块已经丢失或损坏,无法复原,只有让hdfs离开安全模式,才可以让hdfs启动成功,这样无可避免的会导致数据丢失。
通过原因分析可知,有两个方法离开这种安全模式:
1. 修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999;
该方法虽然可以是HDFS正常启动,但是threshold.pct的值不好把握,设置低了会导致集群可靠性下降,不推荐使用。
2. 退出安全模式后,删除损坏的块文件,然后重启hdfs服务。
退出安全模式具体方法如下:
1.首先启动hdfs所有服务,包括NameNode | DataNode | JournalNode | DFSZKFailoverController等;
2.判断hdfs是否处于安全模式
[hadoop@172-25-8-121 bin]$ hdfs dfsadmin -safemode get Safe mode is ON 注:两种模式,ON / OFF
3.使用fsck命令查看是否有损坏的块
[hadoop@172-25-8-121 hadoop]$ ./bin/hdfs fsck / /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/attribute/08fa05898ff34fe9b0cdfef5dc30e9e6:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742016 /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/attribute/08fa05898ff34fe9b0cdfef5dc30e9e6:MISSING 1 blocks of total size 78969 B.. /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/image/1ca82fc944a14a05aebac92b8de46d11:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742018 /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/image/1ca82fc944a14a05aebac92b8de46d11:MISSING 1 blocks of total size 72545 B... /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/sequence/9ddd08a485164eabbdd16d66d96b19b3:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742020 /hbase/data/default/DSA_RESULT_SUMMARY/3432986e5109695221484de73f26cecd/sequence/9ddd08a485164eabbdd16d66d96b19b3:MISSING 1 blocks of total size 77363 B......... /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/attribute/a50e9e114db548508328bee892139800:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742015 /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/attribute/a50e9e114db548508328bee892139800:MISSING 1 blocks of total size 138179 B.. /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/image/9965fb45404b46278d2d4738bbff8051:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742017 /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/image/9965fb45404b46278d2d4738bbff8051:MISSING 1 blocks of total size 126927 B.... /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/sequence/441a9d027c944d78931d0d18a39454bd:CORRUPT blockpool BP-2061322962-172.25.8.121-1440560168099 block blk_1073742019 /hbase/data/default/DSA_RESULT_SUMMARY/939bafb7709b004c8a81796b6af05733/sequence/441a9d027c944d78931d0d18a39454bd: MISSING 1 blocks of total size 135366 B........................Status: CORRUPT Total size: 1624639056 B (Total open files size: 45 B) Total dirs: 85 Total files: 75 Total symlinks: 0 (Files currently being written: 5) Total blocks (validated): 83 (avg. block size 19573964 B) (Total open file blocks (not validated): 5) ******************************** CORRUPT FILES: 6 MISSING BLOCKS: 6 MISSING SIZE: 629349 B CORRUPT BLOCKS: 6 ******************************** Minimally replicated blocks: 77 (92.77109 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 0 (0.0 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 1.8554217 Corrupt blocks: 6 Missing replicas: 0 (0.0 %) Number of data-nodes: 4 Number of racks: 1 FSCK ended at Wed Aug 26 17:17:22 CST 2015 in 44 milliseconds The filesystem under path '/' is CORRUPT
4.在NameNode节点上使用dfsadmin命令离开安全模式
[hadoop@172-25-8-121 hadoop]$ ./bin/hdfs dfsadmin -safemode leave Instead use the hdfs command for it. Safe mode is OFF
5.使用fsck命令将丢失的块删除
[hadoop@172-25-8-121 hadoop]$ ./bin/hdfs fsck -delete
6.重启hdfs相关服务
[hadoop@172-23-9-20 hadoop]# ./sbin/dfs-start.sh
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)