這是和HDFS系統底層設計實現有關系的,HDFS本身的設計就是用來解決海量大文件數據的存儲.,他天生喜歡大數據的處理,大文件存儲在HDFS中,會被切分成很多的小數據塊,任何一個文件不管有多小,都是一個獨立的數據塊,而這些數據塊的信息則是保存在元數據中的,在之前的博客HDFS基礎里面介紹過在HDFS集群的namenode中會存儲元數據的信息,這里再說一下,元數據的信息主要包括以下3部分:
1)抽象目錄樹
2)文件和數據塊的映射關系,一個數據塊的元數據大小大約是150byte
3)數據塊的多個副本存儲地
而元數據的存儲在磁盤(1和2)和內存中(1、2和3),而服務器中的內存是有上限的,舉個例子:
有100個1M的文件存儲進入HDFS系統,那么數據塊的個數就是100個,元數據的大小就是100*150byte,消耗了15000byte的內存,但是只存儲了100M的數據。
有1個100M的文件存儲進入HDFS系統,那么數據塊的個數就是1個,元數據的大小就是150byte,消耗量150byte的內存,存儲量100M的數據。
所以說HDFS文件系統不適用於存儲小文件。