1 FileSystem經過RPC與NN通訊,NN返回該文件的部分或所有block列表(含有block拷貝的DN地址)。spa
2 選取舉慄客戶端最近的DN創建鏈接,讀取block,返回FSDataInputStream。blog
1 當讀到block結尾時,FSDataInputStream關閉與當前DN的鏈接,並未讀取下一個block尋找最近DN。it
2 讀取完一個block都會進行checksum驗證,若是讀取DN時出現錯誤,客戶端會通知NN,而後再從下一個擁有該block拷貝的DN繼續讀。權限
3 若是block列表讀完後,文件還未結束,FileSystem會繼續從NN獲取下一批block列表。請求
1 FileSystem向NN發出請求,在NN的namespace裏面建立一個新的文件,可是並不關聯任何塊。方法
2 NN檢查文件是否已經存在、操做權限。若是檢查經過,NN記錄新文件信息,並在某一個DN上建立數據塊。im
3 返回FSDataOutputStream,將Client引導至該數據塊執行寫入操做。通信
HDFS默認將每一個數據塊放置3份。FSDataOutputStream將數據首先寫到第一節點,第一節點將數據包傳送並寫入第二節點,第二節點 --> 第三節點。數據
flush緩衝區的數據包,block完成複製份數後,NN返回成功消息。客戶端