hadoop最基本的功能設(shè)計就是對外提供數(shù)據(jù)的讀寫九昧。框架如下(client就是讀寫操作的代表蟋恬,一般指的是API方式獲任膛恕):
1趁冈、從HDFS讀取數(shù)據(jù)
2、寫數(shù)據(jù)到HDFS
文件的寫入過程非常復(fù)雜拜马,我根據(jù)理解畫的流程圖并不完整渗勘,其中缺的最主要的一塊就是在管道傳輸?shù)臅r候遇到錯誤的處理流程。根據(jù)我查的資料了解俩莽,網(wǎng)上說的錯誤處理過程大致分兩類旺坠,一類是關(guān)閉管道重新申請DataNode,然后再建立管道重新傳輸扮超,當然數(shù)據(jù)從ackQueue返回到DataQueue是必然的取刃。另一類則是關(guān)閉管道后移除錯誤節(jié)點出刷,然后剩下的節(jié)點組成管道繼續(xù)傳輸。錯誤節(jié)點的錯誤會被標記馁龟,等待DataNode自行處理崩侠。然后NameNode會在文件傳輸完成后根據(jù)副本數(shù)量自動分配DataNode復(fù)制數(shù)據(jù)達到副本數(shù)量為止坷檩。我個人任務(wù)第二種更偏向于真實情況,因為源碼的注釋里說移除錯誤節(jié)點矢炼,建立不包含錯誤節(jié)點的新的管道系瓢,并沒有說立即申請新的DataNode組成管道句灌。基本過程就是如下圖所示(參考hadoop源碼說明):