hadoop系列之HDFS 读写数据流程、NN和2NN、DataNode工作机制

文章详细阐述了NameNode启动时如何处理Fsimage和Edits,以及客户端对元数据的操作。SecondaryNameNode的角色在于定期执行CheckPoint,合并Fsimage和Edits,确保NameNode的数据安全。检查点的周期和操作次数可通过配置参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. HDFS读写数据流程

本文我们学习HDFS读写数据流程,本章是面试重点

1.1 写数据流程

我觉得图已经比较清楚了,花了我1小时记忆与作图,啧啧啧

1.2 写数据流程

1.3 节点距离计算

HDFS写数据过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据

节点距离:两个节点到达最近的公共祖先的距离总和

1.4 机架感知

+ 第一个副本在client所处的节点上,如果client在集群外,随机选一个 + 第二个副本在另一个机架上随机选择一个节点 + 第三个副本在第二个副本所在机架上随机选择一个节点

2.HDFS NN和2NN工作机制

2.1 第一阶段:NameNode启动

1.第一次启动NameNode格式化后,创建Fsimage和Edits文件,如果不是第一次启动,直接加载Fsimage和Edits到内存
2.客户端对元数据进行增删改请求
3.NameNode记录操作日志,更新滚动日志
4.NameNode在内存中对元数据进行增删改

2.2 第二阶段:Secondary NameNode工作

1.Secondary NameNode询问NameNode是否需要CheckPoint
2.Seconary NodeNode请求执行CheckPoint
3.NameNode滚动正在写的Edits日志
4.将滚动前的Edits和Fsimage拷贝到Secondary NameNode
5.Secondary NaneNode加载Edits和Fsimage到内存,并合并
6.生成新的镜像文件fsimage.chkpoint
7.拷贝fsimage.chkpoint到NameNode
8.NameNode将fsimage.chkpoint重新命名为fsimage,替换旧fsimage

2.3 检查点时间设置

在hadoop.env中按之前介绍同理配置

// 默认1小时检查一次
HDFS_CONF_dfs_namenode_checkpoint_period=3600s
// 默认1分钟检查一次操作次数,操作次数达到1百万时,Secondary NameNode执行一次
HDFS_CONF_dfs_namenode_checkpoint_txns=1000000
HDFS_CONF_dfs_namenode_check_period=60s

3. DataNode工作机制

我们了解HDFS中DataNode存储节点的工作机制

3.1 DataNode工作机制

  1. DataNode启动后向NameNode注册
  2. NameNode注册成功
  3. 以后DataNode每周期6小时上报所有块信息
  4. 心跳每3秒一次,心跳返回结果带有NameNode给该DataNode的命令
  5. 如果超过10分钟+30秒没有收到DataNode心跳,则认为该节点不可用

3.2 相关配置

// DN向NN汇报块信息的时间间隔,默认6小时
HDFS_CONF_dfs_blockreport_intervalMsec=21600000
// DN扫描自己节点块信息列表的时间,默认6小时
HDFS_CONF_dfs_datanode_directoryscan_interval=21600s
// TIMEOUT=2*dfs.namenode.heartbeat.recheck-interval+10*dfs.heartbeat.interval=2*5分钟+10*3秒
// 300000毫秒==5分钟
HDFS_CONF_dfs_namenode_heartbeat_recheck___interval=300000
HDFS_CONF_dfs_namenode_heartbeat_interval=3

3.3 数据完整性保证

  1. 当DataNode读取Block的时候,它会计算CheckSum
  2. 如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏
  3. Client读取其他DataNode上的Block
  4. 常见的校验算法有CRC(循环冗余校验),MD5, SHA系列,HDFS采用CRC
  5. DataNode在其创建后周期验证CheckSum
### 回答1Hadoop是一个分布式存储计算系统。它由一组节点组成,每个节点都有存储计算功能。 Hadoop中有两种节点:NameNodeDataNode。 NameNode是Hadoop的管理节点,负责维护文件系统的元数据,即文件名、块位置、块大小等信息。它还负责维护文件系统的命名空间,即文件目录结构。 DataNodeHadoop的存储节点,负责存储文件的实际数据块。它接收来自NameNode的命令,将数据块写入磁盘,并在需要时将数据块读取出来。 Hadoop中还有一个组件:SecondaryNameNode。它的作用是定期从NameNode拉取元数据的副本,并与NameNode进行同步。如果NameNode出现故障,可以使用SecondaryNameNode上的元数据副本来恢复。 简而言之,NameNode负责文件系统的元数据管理命名空间维护,DataNode负责存储文件的实际数据块,SecondaryNameNode负责与NameNode的元数据同步。 ### 回答2Hadoop中的NameNode(NNSecondaryNameNode(2NN)是HDFS(分布式文件系统)的重要组件,它们都承担着维护文件系统元数据的责任,但在工作原理上有所不同。 NameNode是HDFS的主节点,它负责管理文件系统的命名空间其它重要的元数据信息。当客户端请求执行某个文件操作时,首先会与NameNode通信,NameNode会返回相应的数据块所在的DataNode列表,然后客户端才能与对应的DataNode进行通信。NameNode还记录了文件的层次结构、文件块的位置、复本数量以及各个DataNode的健康状况等信息。NameNode将元数据信息存储在内存中,并定期将其持久化到本地磁盘以防止系统故障时的数据损失。因此,NameNode的工作可简单概括为处理元数据请求、维护文件系统结构、存储数据块位置信息。 SecondaryNameNode(或者称为CheckpointNode)并不是NameNode的替代物,仅用于辅助NameNode进行元数据的备份合并。SecondaryNameNode根据预定的时间间隔或事务数目,从主节点中得到元数据的快照,并将其存储在本地文件系统上。这样就可以在主节点出现故障的情况下,通过使用SecondaryNameNode上的快照信息来恢复主节点。此外,SecondaryNameNode还负责合并NameNode的编辑日志,将内存中的元数据信息与编辑日志中存储的增量变更合并,减轻了NameNode的元数据负担。 综上所述,NameNode是Hadoop中负责管理文件系统元数据的主节点,而SecondaryNameNode则是辅助NameNode进行备份合并工作的节点。它们的工作原理是相辅相成的,共同维护HDFS的可靠性高可用性,在大规模数据存储处理的分布式环境中起到了关键的作用。 ### 回答3: Hadoop中的NN(NameNode)2NN(Secondary NameNode)是Hadoop分布式文件系统(HDFS)中的关键组件,它们共同协同工作来保障数据的高可用性数据一致性。 NNHDFS的主节点,负责存储管理文件系统的元数据信息,包括文件目录的命名空间、块到数据节点的映射关系等。NN也负责处理客户端的文件操作请求,例如文件的读写、创建删除等。NN将元数据以文件(fsimage)编辑日志(edits)的形式存储在本地磁盘上。NN工作原理如下: 1. 当客户端发起文件写入请求时,NN接收到请求后会先将文件的元数据记录到内存中,并返回给客户端一个文件写入路径。 2. 当客户端结束文件写入后,NN将文件划分为固定大小的数据块,并记录下每个数据块所在的数据节点信息。 3. 当客户端请求文件读取时,NN根据文件元数据信息获取到数据块的位置,并返回给客户端所需的数据节点信息。 2NNNN的辅助节点,它主要用来定期合并NN的文件系统元数据编辑日志,生成新的文件系统镜像(fsimage)编辑日志快照(edits),以便在NN发生故障时进行故障恢复。2NN工作原理如下: 1. 2NN定期从NN获取文件系统的编辑日志,并将这些编辑日志合并到之前的镜像文件上,生成新的文件系统镜像编辑日志快照。 2. 当NN发生故障时,2NN可以用其最新的文件系统镜像编辑日志快照来帮助恢复NN,以保障文件系统的高可用性。 总结来说,NN负责管理HDFS的文件系统元数据信息处理客户端的文件操作请求,2NN则负责定期合并NN的元数据信息编辑日志,以备份恢复NN的故障。通过NN2NN的协同工作Hadoop能够提供高可用性的分布式文件存储处理服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法小生Đ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值