下圖描述了Client向HDFS上傳一個200M大小的日誌文件的大體過程:服務器
1)首先,Client發起文件上傳請求,即經過RPC與NameNode創建通信。日誌
2)NameNode與各DataNode使用心跳機制來獲取DataNode信息。NameNode收到Client請求後,獲取DataNode信息,並將可存儲文件的節點信息返回給Client。xml
3)Client收到NameNode返回的信息,與對應的DataNode節點取得聯繫,並向該節點寫文件,寫入文件被切分紅128m大小的數據塊,最後一塊可能不夠128m,一個數據塊裏不能同時存儲2個以上文件的數據。blog
4)文件寫入到DataNode後,以流水線的方式複製到其餘DataNode(以3份冗餘爲例,數據塊副本策略爲:第一個塊寫入最近的機架上的一臺服務器,第二個塊由第一個塊複製到同一個機架上的另外一臺主機上,最後一個副本被第二個副本主機複製到不一樣機架的不一樣主機上),至於複製多少份,與所配置的hdfs-default.xml中的dfs.replication相關。ip