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,无法提交新的任务

 

posted @ 2018-12-23 13:12  徐软件  阅读(329)  评论(0编辑  收藏  举报