1. 程式人生 > >hdfs的bug紀錄, Unexpected block state

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,無法提交新的任務