现象
突然收到DataNode挂掉异常的报警,重启完成后,进程虽然在运行,但是NameNode的WebUI上显示大量的block丢失。
There are 12622047 missing blocks.
Number of Under-Replicated Blocks 14436901
重新启动的DataNode节点block数量为0,明显不正常
HDFS在对丢失的block做恢复,missing blocks的数量在减少,但是丢失的的太多了,恢复速度很慢,这种情况肯定不能指望集群自动恢复的。
看了下DataNode的数据目录,大小没什么变化,第一感觉应该是block的数据还在,但不知为何NameNode认为这些block丢失了。
业务侧报警持续,情况紧急,需要赶紧分析原因,恢复这些missing的block。
定位
看了下出现异常的DataNode节点日志,发现以下异常
2018-09-04 23:24:38,446 WARN org.apache.hadoop.hdfs.server.datanode.DataBlockScanner: No block pool scanner found for block pool id: BP-21853433-xxxxxxxxx-1484835379573
2018-09-05 00:45:13,777 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Unsuccessfully sent block report 0xa7b72c5217b7ac, containing 1 storage report(s), of which we sent 0. The reports had 6076010 total blocks and used 0 RPC(s). This took 1636