原文来自云台博客:http://yuntai.1kapp.com/?p=954
虽然说之前也对HDFS的应用场景有个大致的认识,但是总感觉不是十分彻底,因此前几天花了点时间进行了整理,现在把它贴出来。
1.概况
1) HDFS不适合大量小文件的存储,因NameNode将文件系统的元数据存放在内存中,因此存储的文件数目受限于NameNode的内存大小。HDFS中每个文件、目录、数据块占用150Bytes。如果存放1million的文件至少消耗300MB内存,如果要存放1billion的文件数目的话会超出硬件能力,但是目前HDFS版本引入了Federation这种多NameNode的机制,可以支持NameNode的横向扩展;同时也可以适用HDFS的小文件合并为大文件的机制;
2) HDFS适用于高吞吐量,而不适合低时间延迟的访问(因为写文件可能存在初始化socket,初始化RPC,及其多次通信等)。如果同时存入1million的files,那么HDFS 将花费几个小时的时间;
3)流式读取的方式,不适合多用户写入一个文件(一个文件同时只能被一个客户端写),以及任意位置写入(不支持随机写),支持文件尾部apend操作,或者文件的覆盖操作;
4