初次接觸分散式檔案系統,有很多迷惑。通過參考網路文章,這裡進行對比一下Hadoop 分散式檔案系統(HDFS)與 傳統檔案系統之間的關係:
Linux 檔案系統 | 分散式檔案系統 | |
塊 | 塊對應物理磁碟的block | 塊對應linux 檔案 |
讀寫單位 | 一個磁碟塊的大小是最小單位 | Linux 系統檔案是最小讀寫單位(預設64mb) |
單個檔案 | 多個資料塊組成 | 多個檔案組成 |
檔案後設資料資訊 |
inode 記錄檔案存放的資料區的block指標 |
namenode 記錄linux 資料檔案所在的datanode |
每個磁碟都有預設的資料塊大小,這是磁碟進行資料讀/寫的最小單位。而構建於單個磁碟之上的檔案系統(linux檔案系統)通過磁碟塊來管理該檔案系統中的塊,該檔案系統中的檔案大小是磁碟塊的整數倍。磁碟塊的大小一般為512位元組,其讀寫的最小單位是磁碟塊的最小單位.檔案佔用的塊由inode進行管理,記錄該檔案存放資料的N個block的實體地址,具體linux下檔案系統的構成請參考我另一篇文章。
HDFS同樣也有塊的概念,HDFS檔案系統中的塊指的是linux檔案,分散式檔案就是有多個linux檔案(塊)組成。其最小塊單位就是一個Linux檔案的大小,預設為64MB,其分片成的linux檔案的檔名有HDFS的namenode管理,該節點還管理了linux檔案對應datanode節點的對映關係。假設有一個1G的大檔案,在linux檔案系統上就是一個檔案,由1G/512b的block組成;在HDFS上需要1024MB/64MB=16塊,即16個linux檔案組成,所以相當於一個普通1G的檔案分成了16個小檔案,在HDFS上的namenode會記錄1G檔名對應16個檔名對映關係和16個檔名在對應datanote節點上的對映關係(備份除外)。datanote節點上的16個小檔案就是linux檔案,在各自datanote節點上的inode裡記錄了16個檔案對應物理磁碟的對映關係。簡而言之:1G的分散式檔案轉換成16個linux檔案,HDFS就是實現了拆分檔案功能,當然由於考慮單點故障原因,它把每個檔案複製了3份(預設), 不管哪個節點出故障可以合成完整的一個1G檔案。
保持更新,轉載請註明出處。如果對你有所幫助請點選右下角的推薦進行支援。
參考連結:
http://www.cnblogs.com/yyyyy5101/articles/1901842.html
https://blog.csdn.net/qq_32041579/article/details/77752733