HDFS的讀:
其實(shí)主要的組件有三個(gè) NameNode DataNode Client
這三個(gè)角色 在 hdfs讀取 過(guò)程之中執(zhí)行的職責(zé),就是hdfs 讀取的流程。
1:Client 向NameNode 發(fā)起 RPC 請(qǐng)求。
2:NameNode 返回文件的部分 block 或者 文件的全部 block 列表,同時(shí) block 所處的 DataNode的 位置,也是會(huì)被返回的。
3:Client 選擇要讀取的 block ,選擇距離 Client 最近的,存儲(chǔ)著 Block 的 DataNode 建立連接,讀取數(shù)據(jù),讀取完成之后,關(guān)閉連接。
4:讀取完成 Block 列表,但是文件的 Block 還沒(méi)有被讀取完成,那么再次向 NameNode 發(fā)起請(qǐng)求 建立連接。
5:如果在讀取 Block 的過(guò)程之中出現(xiàn)錯(cuò)誤,客戶端會(huì)通知 NameNode,然后再?gòu)南乱粋€(gè)擁有該 Block 副本的DataNode 繼續(xù)讀取。