1. 简述什么是HDFS,以及HDFS作用 ?
HDFS,全称为Hadoop Distributed File System,即Hadoop分布式文件系统,是一个分布式文件系统,由Apache Hadoop项目的一部分。它被设计用来在廉价的硬件上运行,并且能够提供高吞吐量访问应用程序的数据。
HDFS的主要特点包括:
- 高可靠性:HDFS通过在多个节点上存储数据的多个副本来实现数据的高可靠性。
- 高吞吐量:HDFS优化了数据的存储和检索,特别是对于大规模数据集,可以提供高吞吐量的数据访问。
- 适合大规模数据集:HDFS非常适合存储和处理大规模数据集,特别是那些不适合放在单个机器上的数据。
- 支持数据的批量处理:HDFS与MapReduce等批量数据处理模型紧密集成,可以高效地进行数据的批量处理。
- 数据本地性:HDFS优化了数据访问,尽量使计算任务在数据存储的节点上执行,减少了数据传输的需要。
HDFS的作用:
- 数据存储:HDFS提供了一个可靠的存储系统,用于存储大量数据。
- 数据访问:它允许应用程序以高吞吐量的方式访问存储的数据。
- 数据管理:HDFS提供了数据管理功能,包括数据复制、数据恢复等。
- 支持分布式计算:HDFS与Hadoop生态系统中的其他组件(如MapReduce、YARN等)紧密集成,支持分布式计算任务。
- 容错性:HDFS能够在节点故障的情况下继续运行,保证数据的可用性和一致性。
HDFS是构建在普通硬件上的分布式文件系统,它通过在多个节点上存储数据的多个副本,以及优化数据访问方式,为大规模数据处理提供了强大的支持。
2. 简述HDFS文件写入和读取流程 ?
HDFS(Hadoop Distributed File System)是一个分布式文件系统,它设计用来在廉价的硬件上运行,提供高吞吐量的数据访问。以下是HDFS文件写入和读取的基本流程:
文件写入流程:
- 客户端请求写入:用户或应用通过HDFS客户端发起写入请求。
- NameNode定位:客户端首先联系NameNode,请求写入文件。NameNode是HDFS的元数据服务器,负责管理文件系统的命名空间和客户端对文件的访问。
- 数据块分配:NameNode检查文件系统命名空间,确定文件应该存储在哪些DataNode上。DataNode是HDFS的数据存储服务器。
- 数据块写入:NameNode将数据块的位置信息返回给客户端,客户端根据这些信息将数据分成多个块,并将每个块发送到相应的DataNode。
- 数据复制:为了数据的可靠性,每个数据块会在多个DataNode上存储多个副本(默认是3个副本)。
- 确认写入:当DataNode接收到数据块后,它会向客户端发送确认信息。客户端在收到所有DataNode的确认后,向NameNode发送写入完成的信号。
- 更新元数据:NameNode更新文件系统的元数据,记录文件的位置和数据块的副本信息。
文件读取流程:
- 客户端请求读取:用户或应用通过HDFS客户端发起读取请求。
- NameNode查询:客户端联系NameNode,请求获取文件的元数据信息。
- 获取数据块位置:NameNode返回文件数据块的位置信息给客户端,包括数据块所在的DataNode。
- 数据块读取:客户端根据NameNode提供的信息,直接从DataNode读取数据块。
- 数据块合并:客户端将从不同DataNode读取的数据块合并,恢复成完整的文件内容。
- 读取完成:客户端完成数据的读取。
HDFS的设计理念是“写入一次,读取多次”,因此它在写入时会进行冗余存储&#x