問題現(xiàn)象
HDFS讀取文件偶現(xiàn)失敗,均為append中文件,拋出cant't locate block異常锡搜。
問題分析
HDFS2.7.2及以前版本對(duì)Append操作處理存在實(shí)現(xiàn)缺陷。Append數(shù)據(jù)在寫最后一個(gè)Block時(shí),NameNode會(huì)刷新其Block Id苇侵,而DataNode會(huì)在寫完后才刷新Block Id,在此期間如果業(yè)務(wù)側(cè)同時(shí)讀取該文件企锌,并讀到該Block榆浓,且其處在DataNode還沒更新Block Id之前,則會(huì)出現(xiàn)該異常撕攒。
問題解決方案
調(diào)整業(yè)務(wù)邏輯陡鹃,避免讀取Append中文件末尾Block。