HDFS基於操做系統的文件系統;node
假設有一個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文件
linux
散列表,它是基於高速存取的角度設計的,也是一種典型的「空間換時間」的作法。顧名思義,該數據結構可以理解爲一個線性表,但是當中的元素不是緊密排列的,而是可能存在空隙。算法
散列表(Hash table,也叫哈希表),是依據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它經過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。這個映射函數叫作散列函數,存放記錄的數組叫作散列表。數組
著名的hash算法,MD5 和 SHA-1 可以說是眼下應用最普遍的Hash算法,而它們都是以 MD4 爲基礎設計的。安全
(1) MD4數據結構
MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年設計的,MD 是 Message Digest 的縮寫。它適用在32位字長的處理器上用快速軟件實現--它是基於 32 位操做數的位操做來實現的。分佈式
(2) MD5函數
MD5(RFC 1321)是 Rivest 於1991年對MD4的改進版本號。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 MD4 一樣。MD5比MD4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好spa
(3) SHA-1 及其它操作系統
SHA1是由NIST NSA設計爲同DSA一塊兒使用的,它對長度小於264的輸入,產生長度爲160bit的散列值,所以抗窮舉(brute-force)性更好。SHA-1 設計時基於和MD4一樣原理,並且模仿了該算法