文件读取示意图
1、首先客户端通过FileSystem(就是HDFS的一个实例)的open方法打开要读取的实例
2、通过RPC调用请求NameNode这个文件的起始块的信息,NameNode会向客户端返回一个带有这个文件的起始块的列表
这个列表是排好序的,即按照存在起始块的DataNode和客户端的距离(根据网络拓扑结构确定)
3、客户端对最近的DataNode节点调用Read方法读取文件,需要时还会再次向NameNode节点发送请求下一批块的位置信息
4、当读完所有的块客户端关闭连接
文件写入示意图
1>客户端向NameNode发起写请求,首先在NameNode的系统文件命名空间中新建一个文件名
2>向DataNode节点写数据,写数据的同时DataNode会做异步的复制工作即把Block复制到别的节点上
3>每写一个节点的数据后该DataNode会向客户端发送一个消息,当所有的DataNode(不包括异步复制的DataNode)都向客户 端发送确认消息后表示文件写操作完成
补充:
A:上传的Block复制到哪些DataNode中
1>如果客户端运行在HDFS集群内部,那么副本1就放在本机
如果客户端运行在HDFS集群外部,那么副本1就随机挑选一台存储不繁忙的机器节点
<
本文详细介绍了Hadoop HDFS的文件读写过程。在读取时,客户端通过FileSystem打开文件,NameNode返回文件块列表,客户端按顺序从最近的DataNode读取并关闭连接。而在写入时,客户端向NameNode发起请求,DataNode接收数据并异步复制,所有DataNode确认后写操作完成。HDFS的一致性模型确保了文件系统的状态管理。
最低0.47元/天 解锁文章
486

被折叠的 条评论
为什么被折叠?



