HDFS存入文件的整个流程

本文结合HDFS的副本和分块从宏观上描述HDFS存入文件的整个流程。HDFS体系中包含Client、NameNode、DataNode、SeconderyNameode四个角色,其中Client是客户端,NN负责管理,DN负责存储、SN协助管理。web


先来看一个官网上的图异步


1.webp.jpg

# 图 0 -HDFS的体系结构
ide


 

HDFS的副本存储有以下规则:spa


1.client将第一副本放到最靠近的一台DNblog


2.第二副本优先放到另外一个机架内存


3.以此类推,尽可能保证副本放在不一样的机架it


因为副本和分块机制的存在,当从本地文件系统向HDFS上传文件时,其内部的流程相对比较复杂,能够经过下图及步骤说明进行理解。class


 2.webp.jpg

# 图 1-1 -hdfs副本存储机制(3副本)
cli


 

A.对于可存于单块的小文件:下载


1.client向NN(NameNode)发起存储请求,


2.NN查找自身是否已有相应的文件,


3.若无则,NN向client返回DN1(DataNode)路径,


4.client向DN1传送副本,


5.DN1经过管道异步向DN2传副本,


6.DN2经过管道异步向DN3传副本,


7.DN3通知DN2接收完成,


8.DN2通知DN1接收完成,


9.DN1通知NN接收完成。


 

B.对于须要分块的大文件:


大体流程同上,但在步骤3NN还会进行块的划分,随后步骤4client会将各块分别发送到分配的DN执行步骤4~9


从前述可见,在向HDFS传输文件的过程当中,NameNode节点相当重要。NN负责掌管元数据。其做用至关于物理硬盘中的文件分配表FAT,NN中的数据若是发生丢失,DN中存储的数据也就没有了意义。


 3.webp.jpg

# 图 1-2 -NN元数据存储机制


1.client向NN请求写,


2.NN将分配block写入editslog文件,


3.NN响应client,


4.client向DN写文件,


5.client通知NN写完成,


6.NN将editslog更新到内存。


ps:经常使用及最新元数据放在内存,最新元数据放editslog,老元数据放fsimage,editslog写满以前将edits log(新元数据)转换并合并到fsimage。


4.webp.jpg

# 图 1-3 -edits log合并机制


当editslog写满:


1.NN通知SecondryNameNode执行checkpoint操做,


2.NN中止向已满editslog写入,


3.NN建立新edits log维持写入,


4.SN下载NN的fsimage和已满editslog,


5.SN执行合并生成fsimage。checkpoint,


6.SN向NN上传fsi。cp,


7.NN将fsi。cp更名fsimage,


8.NN删除已满editslog。


5.webp.jpg


# 图3 -元数据格式:文件全路径,副本数,块编号,块-所在DN的映射。



13.jpg

睿江云官网连接:https://www.eflycloud.com/home?from=RJ0035

相关文章
相关标签/搜索