hadoop最基本的功能設(shè)計(jì)就是對(duì)外提供數(shù)據(jù)的讀寫(xiě)。框架如下(client就是讀寫(xiě)操作的代表,一般指的是API方式獲取):
1、從HDFS讀取數(shù)據(jù)
2、寫(xiě)數(shù)據(jù)到HDFS
文件的寫(xiě)入過(guò)程非常復(fù)雜,我根據(jù)理解畫(huà)的流程圖并不完整,其中缺的最主要的一塊就是在管道傳輸?shù)臅r(shí)候遇到錯(cuò)誤的處理流程。根據(jù)我查的資料了解,網(wǎng)上說(shuō)的錯(cuò)誤處理過(guò)程大致分兩類(lèi),一類(lèi)是關(guān)閉管道重新申請(qǐng)DataNode,然后再建立管道重新傳輸,當(dāng)然數(shù)據(jù)從ackQueue返回到DataQueue是必然的。另一類(lèi)則是關(guān)閉管道后移除錯(cuò)誤節(jié)點(diǎn),然后剩下的節(jié)點(diǎn)組成管道繼續(xù)傳輸。錯(cuò)誤節(jié)點(diǎn)的錯(cuò)誤會(huì)被標(biāo)記,等待DataNode自行處理。然后NameNode會(huì)在文件傳輸完成后根據(jù)副本數(shù)量自動(dòng)分配DataNode復(fù)制數(shù)據(jù)達(dá)到副本數(shù)量為止。我個(gè)人任務(wù)第二種更偏向于真實(shí)情況,因?yàn)樵创a的注釋里說(shuō)移除錯(cuò)誤節(jié)點(diǎn),建立不包含錯(cuò)誤節(jié)點(diǎn)的新的管道,并沒(méi)有說(shuō)立即申請(qǐng)新的DataNode組成管道。基本過(guò)程就是如下圖所示(參考hadoop源碼說(shuō)明):