HDFS读、写数据流程(图解)以及元数据的checkpoint机制

一、HDFS概述

HDFS集群由NameNode,DataNode,SecondaryNameNode构成。
NameNode:接受用户请求。存储元数据(描述文件的数据,如文件名、文件大小、目录名、文件创建时间等)


DataNode:负责管理用户的文件数据块(block),通过心跳机制汇报给NameNode。
           (1)文件默认会按照每128M切分为block块存储在DataNode上,每个block块默认会有三个副本存放在不同的DataNode上
           (2)DataNode会定期向NameNode汇报自身所保存的文件block块信息


SecondaryNameNode:主要负责辅助NameNode,定期合并fsimage(快照文件)和edits(日志文件),并同步一份给NameNode

二、元数据的checkpoint机制(NameNode与DataNode的联系)

 

三、HDFS写数据流程

宏观:

 

微观: 

 

HDFS写数据流程

1.客户端使用rpc通信框架向NameNode发送请求,NameNode接收并处理用户的请求。
2.NameNode审核用户文件的操作权限,文件路径,磁盘空间是否可用,审核通过后,NameNode会返回成功状态给DFS(分布式文件系统)
3.如果DFS接收到成功的状态,会创建一个FSDataoutputStream的对象给客户端使用
4.客户端向NameNode获取文件存储在HDFS中所需要的所有DataNode节点
5.NameNode对客户端划分的block块分配好所有的DataNode
6.客户端通过机架感知与最近的DataNode建立联系,将block块划分为2048个packet进行发送,直到所有的packet发送完毕后,则当前的block块传输完毕,开始传输下一个block块中的packet
7.DataNode之间会形成pipeline通道传输这些packet
8.传输完毕后发送确认值给客户端
9.当最后一个block中的最后一个packet传输完毕后,释放FSDataoutputStream对象,关闭DataNode之间的pipeline通道,至此,写数据完成。

四、HDFS读数据流程  

 

HDFS读数据流程

1.使用HDFS提供的client,向远程的NameNode发起RPC请求
2.namenode会视情况返回文件的部分block块信息列表或者全部block,对于每个block,namenode都会返回该block副本的DataNode地址
3.client会选取离最近的DataNode读取block块
4.建立socket流,DataNode发送数据,以packet的单位接收,先在本地缓存,然后写入目标文件。读取完block,关闭当前的datanode连接,再寻找下一个block最佳的datanode。
5.读取完block后且文件没有读取完,client继续向namenode获取下一批block块
6.后面的block块相对于append到前面的block块,最后合成最终需要的文件
7.读取一个block都会进行checksum验证。如果读取DataNode出现错误,client会通知NameNode,然后再从下一个拥有block的DataNode继续读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值