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