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