HDFS 是一种分布式文件系统,用于处理在商业硬件上运行的大型数据集。 它用于将单个 Apache Hadoop 集群扩展到数百 (甚至数千)个节点。 HDFS 是 Apache Hadoop 的主要组件之一,其他组件包括 MapReduce 和 YARN。 HDFS 不应与 Apache HBase 混淆或被 Apache HBase 取代,Apache HBase 是一个面向列的非关系数据库管理系统,它位于 HDFS 之上,可以通过其内存处理引擎更好地支持实时数据需求。
因为一个 HDFS 实例可能由数千台服务器组成,所以至少有一台服务器出现故障是不可避免的。 HDFS 可检测故障并自动快速恢复。
HDFS 更适用于批处理而不是交互式使用,因此设计中的重点是高数据吞吐率,以适应对数据集的流式访问。
HDFS 适用于数据集大小通常为 GB 到 TB 的应用程序。 HDFS 提供高聚合数据带宽,可以扩展到单个集群中的数百个节点。
为了便于采用,HDFS 设计为可跨多个硬件平台移植,并与各种底层操作系统兼容。
考虑一个文件,其中包括美国每个人的电话号码;姓氏以 A 开头的人的号码可能存储在服务器 1 上,B 存储在服务器 2 上,以此类推。
使用 Hadoop,这个电话簿的片段将存储在集群中,要重建整个电话簿,您的程序需要集群中每个服务器的数据块。
为了确保服务器出现故障时的可用性,缺省情况下,HDFS 会将这些较小的部分复制到另外两台服务器上。 (冗余可以根据每个文件或整个环境增加或减少;例如,开发 Hadoop 集群通常不需要任何数据冗余。) 这种冗余提供了多种好处,最明显的是更高的可用性。
冗余还允许 Hadoop 集群将工作分解成更小的块,并在集群中的所有服务器上运行这些作业,以获得更好的可伸缩性。 最后,您可以实现数据本地性,这在处理大型数据集时至关重要。