1.分布式文件系統存儲副本的方式
1).客戶端負責寫所有副本。例如每個block要存3個副本,客戶端要將3個副本都存到DataNode上才算成功
2).客戶端是負責寫一個副本。剩下的副本由NameNode負責,DataNode向其他DataNode復制(形成一個管道),復制和客戶端寫block是異步的
2.具體的切分block由客戶端負責
1.NameNode元數據管理機制
1.客戶端上傳文件時,NN首先往edits.log文件中記錄元數據操作日志
2.客戶端開始上傳文件,完成后返回成功信息給NN,NN就在內存中寫入這次上傳操作新產生的元數據信息
3.每當editor.log寫滿時,需要將這一段時間新的元數據信息刷到fsimage中去(將edits.log中的數據域fsimage做合並)
合並需要做運算,為了減輕NN的壓力,由SecondaryNameNode來做這次操作。如下圖:
2.DataNode的作用
1.提供真實文件數據的存儲服務。
2.文件塊(block):最基本的存儲單位。對於文件內容而言,一個文件的長度大小是size,那么從文件的0偏移開始,按照固定的大小,順序對文件進行划分並編號,划分好的每一個塊稱一個Block。HDFS默認Block大小是128MB,以一個256MB文件,共有256/128=2個Block.
dfs.block.size
3.不同於普通文件系統的是,HDFS中,如果一個文件小於一個數據塊的大小,並不占用整個數據塊存儲空間
4.Replication。多復本。默認是三個。