优点 1.1 高容错性 1)数据自动保存多个副本。它通过增加副本的形式,提高容错性。 2)某一个副本丢失以后,它可以自动恢复。 1.2适合处理大数据 1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据; 2)文件规模︰能够处理白万规模以上的文什数量,数量相当之大。 1.3 可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点 2.1 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。 2.2 无法高效的对大量小文件进行存储。 1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的; 2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。 2.3 不支持并发写入、文件随机修改。 HDFS 1)一个文件只能有一个写,不允许多个线程同时写; 2)仅支持数据append(追加),不支持文件的随机修改。
思考:为什么块的大小不能设置太小,也不能设置太大? (1)HDFS的块设置太小,会增加寻址时间,程序—直在找块的开始位置; (2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置听需的时间。导致程序在处理这块数据时,会非常慢。 总结: HDFS块的大小设置主要取决于磁盘传输速率。
