
每個磁盤都有默認(rèn)的數(shù)據(jù)塊大小,這是磁盤進(jìn)行數(shù)據(jù)讀/寫的最小單位。而構(gòu)建于單個磁盤之上的文件系統(tǒng)(linux文件系統(tǒng))通過磁盤塊來管理該文件系統(tǒng)中的塊,該文件系統(tǒng)中的文件大小是磁盤塊的整數(shù)倍。磁盤塊的大小一般為512字節(jié),其讀寫的最小單位是磁盤塊的最小單位.文件占用的塊由inode進(jìn)行管理,記錄該文件存放數(shù)據(jù)的N個block的物理地址。
HDFS同樣也有塊的概念,HDFS文件系統(tǒng)中的塊指的是linux文件,分布式文件就是有多個linux文件(塊)組成。其最小塊單位就是一個Linux文件的大小,默認(rèn)為64MB,其分片成的linux文件的文件名有HDFS的namenode管理,該節(jié)點(diǎn)還管理了linux文件對應(yīng)datanode節(jié)點(diǎn)的映射關(guān)系。
假設(shè)有一個1G的大文件,在linux文件系統(tǒng)上就是一個文件,由1G/512b的block組成;在HDFS上需要1024MB/64MB=16塊,即16個linux文件組成,所以相當(dāng)于一個普通1G的文件分成了16個小文件,在HDFS上的namenode會記錄1G文件名對應(yīng)16個文件名映射關(guān)系和16個文件名在對應(yīng)datanote節(jié)點(diǎn)上的映射關(guān)系(備份除外)。datanote節(jié)點(diǎn)上的16個小文件就是linux文件,在各自datanote節(jié)點(diǎn)上的inode里記錄了16個文件對應(yīng)物理磁盤的映射關(guān)系。簡而言之:1G的分布式文件轉(zhuǎn)換成16個linux文件,HDFS就是實(shí)現(xiàn)了拆分文件功能,當(dāng)然由于考慮單點(diǎn)故障原因,它把每個文件復(fù)制了3份(默認(rèn)),不管哪個節(jié)點(diǎn)出故障可以合成完整的一個1G文件。