欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

HDFS上传数据的流程

程序员文章站 2022-06-05 20:58:51
1.当客户端输入一条指令:hdfs dfs -put text.txt /text时,这条命令会给到DistributeFileSystem。 2.通过DistributeFileSystem简称DFS会创建DFSClient。 3.DFSClient会与hdfs服务器建立RPC通讯,此时客户端就可 ......

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

2.通过distributefilesystem简称dfs会创建dfsclient。

3.dfsclient会与hdfs服务器建立rpc通讯,此时客户端就可以访问namenode,并向其发送请求,并且namenode接到请求命令

后会返回一个namenode代理对象(namenodeproxies)。

4.客户端通过代理对象namenodeproxies请求创建文件元信息。

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

根据文件大小会切分成多个数据块,如果文件更大,会缓存文件元信息(缓存大小默认为1000m,可更改),数据块可以分别存到3个副本中:

datanode1、datanode2、datanode3

6.namenode向客户端返回可以存数据的datanode,这里遵循机架感应原则。

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

8.客户端根据namenode返回的datanoded的地址信息直接发送给datanode,并通过创建输出流outputstream写入到hdfs中,同时datanode

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

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

以上是我通过学习,自己总结的hdfs的上传流程,欢迎大家指正,我会根据大家的反馈认真改进完善!