hadoop架构----HDFS工作机制(终于明白了!!)

HDFS读流程

  1. client:通过DistributedFileSystem流请求下载文件
  2. NameNode:返回目标文件的元数据
  3. client:通过FSDataInputStream请求读数据block_1(考虑负载和节点距离)
  4. DataNode1:传输数据
  5. client:访问其他节点并请求数据block_2
  6. DataNode2:传输数据

注意:数据串行读入!!因为这里考虑到了某一个节点的负载,读完一个block再读另一个。

 NN和2NN的工作机制

服务器启动时:加载两个数据到内存
  1. 加载fsimage存储数据
  2. Edits追加(改写数据的过程) ----> 并不会再次修改原数据,减少了修改时间开销
服务器关闭时:将两个镜像文件合并 
  1. 合并fsImage和Edits
  2. 并将改写数据的操作实施

namenode的data数据中就有对应的镜像文件。

 下面具体看看namenode和secondarynamenode是如何协调工作的

  1. Namenode启动:加载编辑日志和镜像到内存
  2. client:增删改查请求
  3. 先更新操作日志、滚动日志 再更改内存
  4. 内存数据修改

小秘书怎么工作?

  1.  SN:请求是否需要CheckPoint  定时时间到或者是Edits中的数据满了
  2. SN:请求执行CheckPoint
  3. Namenode:滚动生成正在写的Edits,生成新的inprogress_002 (注意:此时外界的修改操作将写入002而不是001) 并且修改inprocess_001为Edits_001
  4. SN:拷贝fsimage和edits_001
  5. SN:加载到内存中并合并
  6. 生成新的fsimage文件   ----> fsimage.chkpoint
  7. 拷贝回Namenode并覆盖原fsImage并覆盖改名为fsImage
  8. 最新的数据就成了fsImage和inprocess_002的内容 (只需要下次将其加载到内存即可)

FsImage和Edits文件

  • FsImage:

HDFS文件系统原数据的一个永久的检查点:包含所有目录和iNode序列化信息

  • Edits:

所有更新操作路径  

每次开机合并文件为:edits_inprocess_00000000XXX和最新的FsImage——000000000355(假设是355) 

DataNode工作机制

  • 开机主动上报block信息并定期(6小时)汇报所有块信息
  • 心跳机制:每3s跟老板Namenode汇报自己还活着
  • 超过10min+30s没有收到心跳,则认为该节点over!
  • Namenode不会再将任务传给该节点

数据完整性

奇偶校验位:

原始数据“1”有几个? 最终目的是想得到偶数个“1  ”

  1. 奇数个:校验位写“1”
  2. 偶数个:校验位写“0”

聪明的你想到了一个问题:接收方只能检查出奇数个1的错误,如果两位bit都有问题,使得最后的1为偶数个,这错误就检查不出来吧。于是聪明的工程师也想到了这个问题,于是呢

CRC校验:

  1. 根据双方协定好的多项式,计算多项式项数n并补0,再除以多项式模二运算得到余数添加到原数据的后面成为crc校验码(真是复杂,可以去看另一篇blog哟)
  2. 接收方看看数据准不准确,将数据除以多项式进行模二运算,得到余数为0 太好了,数据传输无误

本期笔记就到这里啦,谢谢你的阅读和关注哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值