
读者交流群已经开通了,有需要的可以私信进入读者交流群
由于 HDFS 的设计,文件系统中文件的数量直接影响 namenode 中的内存消耗。虽然通常对于小型群集而言不是问题,但是当文件数大于 50 到 1 亿时,内存使用量可能会达到一台计算机上可访问内存的限制。在这种情况下,具有尽可能少的文件是有利的。
关于这一点我们前面也提到过一个解决方案那就是处理小文件,你可以参考Hive进阶之优化小文件问题
使用Hadoop Archives是减少分区中文件数量的一种方法。 Hive 具有内置支持,可将现有分区中的文件转换为 Hadoop 存档(HAR),这样一个曾经由 100 个文件组成的分区只能占用约 3 个文件(取决于设置)。然而,权衡是由于从 HAR 读取时的额外开销,查询可能会变慢。
Hive中的Archive实际上就是使用Hadoop Archive (HAR),关于这个你可以参考Hadoop Archives
Hadoop ArchiveHadoop Archive是一种特殊的归档格式,Hadoop Archive映射到文件系统目录,一个HAR以扩展名.har结尾,一个HAR目录包含元数据(以_index和_masterindex的形式)和data