相同问题,不同表述
问题:Hadoop小文件问题
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
《一种Hadoop小文件存储和读取的方法》
然而,HDFS设计的初衷是存储超大文件,对于海量小文件,由于NameNode内存开销等问题,其存储和读取性能并不理想。
《基于HDFS的小文件处理与相关MapReduce计算模型性能的优化与改进》
小文件处理成为hadoop平台的一个瓶颈。本文针对hadoop平台处理小文件,通过研究目前解决方案,提出了自己的解决方法。小文件是指文件大小小于HDFS上的块(block)大小(一般为64M)的文件。大量的小文件会严重影响hadoop的性能和其扩展性。原因主要有两点,一是在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占内存150byte,如果有1千万个小文件,则namenode需要2G空间(存两份),如果小文件数量增至1亿个,则namenode需要20G空间。小文件耗费了namenode大量的内存空间,这使namenode的内存容量严重制约集群的扩展和其应用。其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如果访问大量小文件,需要不断的从一个datanode跳到另一个datanode,严重影响性能。最后,处理大量小文件速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个slot,而task启动将耗费大量时间甚至大部分时间都耗费在启动task和释放task上。
《面向Hadoop的小文件存储机制研究》
然而HDFS存储海量的、体积远小于数据块大小的文件时,却会由于HDFS访问特性和元数据管理模式等因素,引发“小文件问题”,即表现为:(1)客户端需频繁跳转数据节点存取小文件,文件读写性能差;(2)集群运行时,名字节点将全部元数据载入内存管理,但内存有限难以管理海量小文件元数据;(3)名字节点启动时加载海量元数据耗时久,造成集群长时间不可用。
