1.客户端请求namenode上传数据信息(包括数据大小,存储位置)
2.namenode对数据进行校验(包括数据的存储容量,元数据信息)
3.namenode对处理的信息返回到客户端,
4.客户端向namenode请求上传第一块数据
5.客户端与三台机器建立连接
6.namenode返回允许上传第一块数据块
7.客户端对数据块进行读取操作,并且本地分布式输出流边进行读取,边输出到第一台机器上,并且以打包的形式
8.第一台机器,边进行写的操作,边输出到第二台机器上,
9.第二台机器边把数据写入到本地,边把数据输出到啊第三台机器
10.当集群中有一台机器存储数据成功,那么本次上传数据块算是成功
下载文件流程
1.客户端向namenode请求下载数据信息
2.namenode对信息进行处理,并返回对应的虚拟文件目录
3.客户端向datanode请求下载离自己最近的机器的数据块
4.读取第一台第一台机器的第一块数据所在的位置
5.下载第一块数据
6.读取下载的第二块文件并与第一块数据块拼接在一起
3.hdfs数据存储的位置特征
3.1 每一个文件在集群中默认以128M存储,
3.2HDFS有三个副本,保证数据的安全
3.3 HDFS不能存储大量的小文件,因为每个文件的存储都在namenide都有记录,二namenode记录元数据的内存是有限的,大量的数据记录,会占用namenode有限的内存,
3.4 HDFS一次存储,多次读写
3.5 HDFS读取文件的效率不高,因为数据存储在不同的节点上,每次读取数据的时候,都要请求nn,和dn ,使得读取的效率不高