HDFS(Hadoop Distributed File System)是一个分布式文件系统,它具有很高的容错性,可以支持运行在廉价的硬件设备上。HDFS具有很高的吞吐量,非常适合拥有海量数据的application。HDFS放宽了一些POSIX要求,以支持 流 的方式访问文件系统中的数据。HDFS是Apache Hadoop核心项目的一部分。
一个HDFS实例可以包含成百上千台的服务器,每个服务器存储整个文件系统数据的一部分。每台服务器都有一定的概率出现硬件故障,这意味着一个HDFS实例中的一部分服务器在某个时刻可能是不可用的。因此,发现故障并能够从故障中快速恢复是HDFS的核心目标。
HDFS适合应用在批处理领域,而不适合与用户交互的领域。它的设计目标是数据访问的高吞吐量,而不是低延迟。
运行在HDFS上的application通常都拥有大数据集,例如一个文件可以达到gigabytes或terabytes大小。因此一个HDFS集群可以扩展到数百个节点,可以支持数千万个文件的存储。
HDFS上的文件模型是 write-once-read-many 。一个文件在完成 创建-写入数据-关闭 后只能再对文件执行appends和truncates两种类型修改操作,无法再执行其它形式的修改。即只能在文件尾部添加或删除数据,不支持在文件的任意位置修改数据。
在分布式系统中,如果一个计算节点要处理的数据离自己很近,那么会有助于提高数据计算的效率。如果要处理的数据量非常大,那么效率提升将更加明显。因为这会降低整个系统的网络拥塞,并提高分布式系统整体的吞吐量。HDFS提供了相应的API,可以将application本身移向数据存储的节点。