hadoop學習筆記(六):HDFS文件的讀寫流程

1、HDFS讀取文件流程:

 

詳解讀取流程:

Client調用FileSystem.open()方法:

  1 FileSystem經過RPC與NN通訊,NN返回該文件的部分或所有block列表(含有block拷貝的DN地址)。spa

  2 選取舉慄客戶端最近的DN創建鏈接,讀取block,返回FSDataInputStreamblog

Client調用輸入流的read()方法:

  1 當讀到block結尾時,FSDataInputStream關閉與當前DN的鏈接,並未讀取下一個block尋找最近DNit

  2 讀取完一個block都會進行checksum驗證,若是讀取DN時出現錯誤,客戶端會通知NN,而後再從下一個擁有該block拷貝的DN繼續讀。權限

  3 若是block列表讀完後,文件還未結束,FileSystem會繼續從NN獲取下一批block列表。請求

關閉FSDataInputStream

2、HDFS文件寫入流程:

 

 

 詳細寫入流程:

Client調用FileSystem的create()方法:

  1 FileSystem向NN發出請求,在NN的namespace裏面建立一個新的文件,可是並不關聯任何塊方法

  2 NN檢查文件是否已經存在、操做權限。若是檢查經過,NN記錄新文件信息,並在某一個DN上建立數據塊。im

  3 返回FSDataOutputStream,將Client引導至該數據塊執行寫入操做。通信

Client調用輸出流的write()方法:

  HDFS默認將每一個數據塊放置3份。FSDataOutputStream將數據首先寫到第一節點,第一節點將數據包傳送並寫入第二節點,第二節點 --> 第三節點。數據

Client調用流的close()方法:

  flush緩衝區的數據包,block完成複製份數後,NN返回成功消息。客戶端

相關文章
相關標籤/搜索