假如有128G的小文件,那么它会有多少字节那?
一个小文件:占用namenode多大内存150字节;
128 * 1024*1024*1024byte/150字节 = 9亿文件块
(1KB(Kilobyte,千字节)=1024B= 2^10 B;1MB(Megabyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;1GB(Gigabyte,吉字节,十亿字2113节,又称“千兆”)=1024MB= 2^30 B。)
怎么解决呢?
(1)采用har归档方式,将小文件归档
我们的hdfs中保存大量小文件(当然不产生小文件是最佳实践),这样会把namenode的namespace搞的很大。namespace保存着hdfs文件的inode信息,文件越多需要的namenode内存越大,但内存毕竟是有限的(这个是目前hadoop的硬伤)。
下面图片展示了,har文档的结构。har文件是通过mapreduce生成