hdfs的bug纪录, Unexpected block state

Posted keepthinking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdfs的bug纪录, Unexpected block state相关的知识,希望对你有一定的参考价值。

 

 

今早遇到一个bug,提交 spark job 失败。说 hdfs 在 safe mode状态,不允许创建和删除文件。

然后发现 hdfs 的日志文件不断滚动,几乎每秒钟100M的速度打日志,当时没有看懂。safe mode 打开关闭了几回,发现主要的问题是下面这条日志:

java.lang.IllegalStateException: Unexpected block state: blk_1073748951_12122
 is COMMITTED but not COMPLETE, file=application_1543829391405_0459_1.inprogress (INodeFile),
 blocks=[blk_1073748951_12122] (i=0)d

 

翻译:blk_1073748951_12122 坏了,该block属于文件 application_1543829391405_0459_1.inprogress

解决方案:删除该文件,关闭safe mode。

 

问题推测:我们的 yarn 集群运行在 aws 上,配置了弹性伸缩的策略。 application_1543829391405_0459_1.inprogress 属于一个 spark application 的meta信息。

可能是弹性收缩,也可能是偶然因素,导致 block 数据丢失,于是引发问题:

1. spark application 失败

2. dfs自我修复,疯狂打日志

3. 打开了 safe mode,无法提交新的任务

 

以上是关于hdfs的bug纪录, Unexpected block state的主要内容,如果未能解决你的问题,请参考以下文章

HDFS源码学习纪录之-NameNode篇

HDFS简单的shell操作--大数据纪录片第二记

bug纪录

[Bug0061] RabbitMQ 报错 An unexpected connection driver error occured

Django--bug--__init__() got an unexpected keyword argument 'qnique'

Bug解决LDA() got an unexpected keyword argument ‘n_components‘