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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

算法小生Đ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值