题目
什么是 HDFS?
答案
HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。
分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。
HDFS使用 Master 和 Slave 结构对集群进行管理。一般一个 HDFS 集群只有一个 Namenode 和一定数目的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。
优势如下:
- 容错和从硬件故障中快速恢复:由于一个 HDFS 实例可能由数千台服务器组成,因此,至少有一台服务器始终有可能发生故障。HDFS 可检测故障并自动快速恢复。跨多个节点制作多份数据复制副本有助于防止数据丢失。HDFS 将至少一个副本保留在与所有其他副本不同的机架上。跨节点的大型集群中的数据存储提高了可靠性。此外,HDFS 还可以拍摄存储快照来保存时间点 (PIT) 信息。
- 访问流数据:HDFS 主要用于批处理而非交互式使用,因此设计的重点是高数据吞吐率,以适应数据集的流式访问。
- 容纳大型数据集:HDFS 可容纳使用通常从 GB 到 TB 大小的数据集的应用程序。HDFS 提供高聚合数据带宽,可以在单个集群中扩展到数百个节点,并有助于驱动高性能计算 (HPC) 系统。数据湖通常存储在 HDFS 上。数据仓库也使用过 HDFS,但由于意识到操作的复杂性,现在使用得较少。
- 成本效益:由于数据是虚拟存储的,因此,可以降低文件系统元数据和文件系统命名空间数据存储的成本。
- 可移植性:为了方便采用,HDFS 被设计为可在多个硬件平台上移植,并兼容各种底层操作系统,包括 Linux、macOS 和 Windows。此外,Hadoop 数据湖还能支持非结构化、半结构化和结构化数据库,从而实现最大的灵活性。虽然 Hadoop 是用 Java 编写的,但其他语言(包括 C++、Perl、Python 和 Ruby)也能将其用于数据科学。
- 处理速度:HDFS 使用集群架构来帮助提供高吞吐量。为减少网络流量,Hadoop 文件系统将数据存储在进行计算的数据节点,而不是将数据移动到其他位置进行计算。
- 可扩展性:凭借可横向和纵向扩展的功能,HDFS 可以快速进行调整,以适应组织的数据需求。一个集群可能包含数百或数千个节点。
