1.1 HDFS的主要设计理念
1、存储超大文件
hdfs是一种分布式文件存储结构,可以理解为一个超大型的文件系统,可以通过命令:hadoop fs –ls,显示文件系统中的根目录的文件。
2、最高效的访问模式是 一次写入、多次读取
HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。
3、运行在普通廉价的服务器上
HDFS设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。对CPU没有要求,对内存60GB多就可以了,硬盘也便宜。
1.2 HDFS不适合的领域
1、将HDFS用于对数据访问要求低延迟的场景,尤其是要求在毫秒级。
由于HDFS是为高数据吞吐量应用而设计的,必然以高延迟为代价。
2、存储大量小文件
HDFS中元数据(文件的基本信息)存储在namenode的内存中,而namenode为单点,小文件数量大到一定程度,namenode内存就吃不消了。
在hadoop平台下,小文件太多,消耗资源特别大。
1.3 HDFS基本概念
1、文件以块(block)的形式存储,
不是按照文件存储,而是按照块来存储,以128M(默认值)来分隔 ,旧版本是64M。每一个block会在多个datanode上存储多份副本,默认是3份。
举例,上传一个文件大小是:300M
将300M文件分成三个block来存储,当下载的时候,以block下载,下载后在客户端将block1,block2和block3拼成原文件