1.客戶端將文件寫入本地磁盤的 HDFS Client 文件中
2.當(dāng)臨時(shí)文件大小達(dá)到一個(gè) block 大小時(shí),HDFS client 通知 NameNode,申請(qǐng)寫入文件
3.NameNode 在 HDFS 的文件系統(tǒng)中創(chuàng)建一個(gè)文件,并把該 block id 和要寫入的 DataNode 的列表返回給客戶端
4.客戶端收到這些信息后,將臨時(shí)文件寫入 DataNodes
5.文件寫完后(客戶端關(guān)閉),NameNode 提交文件(這時(shí)文件才可見,如果提交前,NameNode 垮掉,那文件也就丟失了。fsync:只保證數(shù)據(jù)的信息寫到 NameNode 上,但并不保證數(shù)據(jù)已經(jīng)被寫到DataNode 中)
Rack aware(機(jī)架感知)
通過配置文件指定機(jī)架名和 DNS 的對(duì)應(yīng)關(guān)系
假設(shè)復(fù)制參數(shù)是3,在寫入文件時(shí),會(huì)在本地的機(jī)架保存一份數(shù)據(jù),然后在另外一個(gè)機(jī)架內(nèi)保存兩份數(shù)據(jù)(同機(jī)架內(nèi)的傳輸速度快,從而提高性能)
整個(gè) HDFS 的集群,最好是負(fù)載平衡的,這樣才能盡量利用集群的優(yōu)勢(shì)
更多建議: