hadoop之hdfs

一:HDFS的读写流程

写流程
①:客户端向NameNode请求上传文件,namenode检查目标文件是否存在,父目录是否存在。
②:namenode返回信息是否可以上传
③:客户端请求第一个block上传到哪几个datanode服务器上
④:namenode返回n个datanode节点,分别为dn1,dn2,dn3…
⑤:客户端请求向dn1上传数据,dn1收到请求会继续调用dn2,然后依次调用,将通信管道建立完成
⑥:dn1,dn2,dn3逐级应答客户端
⑦:客户端开始往dn1上面传第一个block,(先从磁盘上读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个packet就会传给dn2,dn2传给dn3,dn1每传一个packet会放到应答队列里面等待应答
⑧:当一个block传输完成后,客户端再次请求namenode上传第二个block的服务器(重复执行3-7步)
在这里插入图片描述
读流程
①:客户端向namenode请求下载文件,namenode通过查询元数据,找到文件所在的 datanode地址
②:挑选一台datanode(就近原则,然后随机)服务器,请求读取数据
③:datanode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做校验)
④:客户端以packet为单位接受,先在本地缓存,然后写入目标文件

在这里插入图片描述

二:SecondaryNameNode 工作机制

同时了解一下NameNode的工作机制

在这里插入图片描述
第一阶段:namenode启动
(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求
(3)namenode记录操作日志,更新滚动日志。
(4)namenode在内存中对数据进行增删改查
第二阶段:Secondary NameNode工作
(1)Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。
(2)Secondary NameNode请求执行checkpoint。
(3)namenode滚动正在写的edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到namenode
(8)namenode将fsimage.chkpoint重新命名成fsimage

大白话理解:
我习惯将secondary namenode称作检查点节点,因为他的主要职责就是定期合并(条件是时间,文件大小)edit和fsimage文件,合并成新的fsimage.checkpoint文件,然后返回给NameNode,并重新命名为fsimage,这样的话,namenode重启的话就会从fsimage中加载信息,他也就相当于快照!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值