初次接觸分散式文件系統,有很多迷惑。通過參考網路文章,這裡進行對比一下Hadoop 分散式文件系統(HDFS)與 傳統文件系統之間的關係: inode 記錄文件存放的數據區的block指針 每個磁碟都有預設的數據塊大小,這是磁碟進行數據讀/寫的最小單位。而構建於單個磁碟之上的文件系統(linux文件 ...
初次接觸分散式文件系統,有很多迷惑。通過參考網路文章,這裡進行對比一下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