Hadoop HDFS读写流程与NameNode机制解析

版权申诉
5星 · 超过95%的资源 1 下载量 184 浏览量 更新于2024-07-05 1 收藏 6.72MB PDF 举报
"大数据框架知识点总结,主要关注Hadoop的HDFS读写流程及NameNode与SecondaryNameNode的工作机制。" 在大数据处理领域,Hadoop是一个关键的开源框架,其分布式文件系统(HDFS)提供了高容错性和高吞吐量的数据存储能力。以下是HDFS的核心知识点: ### HDFS写数据流程 1. **客户端发起上传请求**:客户端通过DistributedFileSystem接口向NameNode询问是否可以上传文件,并指定文件路径。 2. **NameNode检查**:NameNode检查文件是否存在,以及父目录是否已经创建。 3. **选择DataNode**:客户端得到NameNode的确认后,请求将第一个Block的存储位置,NameNode返回3个DataNode(如dn1、dn2、dn3)。 4. **建立通信管道**:客户端依次与dn1、dn2、dn3建立连接,形成一个数据传输管道。 5. **数据传输**:客户端开始向dn1上传数据,数据以Packet为单位,每个Packet被逐级传递并存储。 6. **应答机制**:每个DataNode在接收到Packet后,会将它发送给下一个节点并等待应答,确保数据完整性。 7. **Block传输**:当一个Block传输完毕,客户端重复上述步骤上传下一个Block。 ### HDFS读数据流程 1. **客户端下载请求**:客户端通过DistributedFileSystem向NameNode请求下载文件,获取文件Block的位置信息。 2. **选择DataNode**:NameNode提供最近或随机的DataNode服务器地址。 3. **DataNode传输数据**:选定的DataNode开始读取硬盘上的Block数据,并以Packet为单位进行校验,然后发送给客户端。 4. **客户端接收**:客户端接收Packet,先存储在本地缓存,再写入目标文件。 ### NameNode与SecondaryNameNode工作机制 1. **Fsimage**:Fsimage文件保存了HDFS的元数据,包括所有目录和文件的inode信息,是元数据的一个检查点。 2. **Edits文件**:Edits文件记录了所有的更新操作,即自上一次检查点以来的修改。 3. **Seen_txid**:记录了最后应用到Fsimage的事务ID。 **思考:NameNode元数据存储** NameNode的元数据不直接存储在自身磁盘上,而是通过内存来缓存,以提高访问速度。Fsimage和Edits文件则存储在磁盘上,用于持久化元数据。在系统启动时,NameNode加载Fsimage到内存,然后合并Edits中的更新操作,生成新的Fsimage。SecondaryNameNode的主要职责是定期帮助NameNode合并Fsimage和Edits,防止Edits文件过大导致NameNode重启耗时过长。 这个过程中,SecondaryNameNode并不是NameNode的热备份,它在主NameNode故障时不能接管服务,但可以帮助主NameNode管理元数据,确保系统的稳定运行。因此,理解NameNode和SecondaryNameNode的工作机制对于维护Hadoop集群的健康至关重要。