HDFS上传数据的流程

1.当客户端输入一条指令:hdfs dfs -put text.txt /text时,这条命令会给到DistributeFileSystem。缓存

2.经过DistributeFileSystem简称DFS会建立DFSClient。服务器

3.DFSClient会与hdfs服务器创建RPC通信,此时客户端就能够访问NameNode,并向其发送请求,而且NameNode接到请求命令oop

后会返回一个NameNode代理对象(NameNodeProxies)。学习

4.客户端经过代理对象NameNodeProxies请求建立文件元信息。代理

5.NameNode接受请求后就开始建立文件元信息,这些元信息包括:文件名:text.txt、存储路径:/text、文件大小:1KB、冗余度:三、数据块:对象

根据文件大小会切分红多个数据块,若是文件更大,会缓存文件元信息(缓存大小默认为1000M,可更改),数据块能够分别存到3个副本中:循环

DataNode一、DataNode二、DataNode3请求

6.NameNode向客户端返回能够存数据的DataNode,这里遵循机架感应原则。总结

7.客户端根据返回的信息先将文件分块(Hadoop2.x版本每个block为128M,而以前的版本为64M)。通信

8.客户端根据NameNode返回的DataNoded的地址信息直接发送给DataNode,并经过建立输出流OutputStream写入到hdfs中,同时DataNode

会复制到其余两台机器,完成循环上传。

9.上传完成后,DataNode向客户端通讯表示已经传完数据块,同时向NameNode报告,数据上传完成。

以上是我经过学习,本身总结的hdfs的上传流程,欢迎你们指正,我会根据你们的反馈认真改进完善!

相关文章
相关标签/搜索