checkpoint持久化流程:
-
nn保存文件的元数据,是基于内存存储的,如果没有持久化流程,hdfs在停止或关机时会造成文件丢失
-
在nn进行初始化时,会生成第一个快照持久性文件
-
在启动Hdfs后,nn每接收一个命令,都会记录到日志文件edis_inprogress中去(只有对文件作出改变的命令才会被记录,ls之类查询命令不会被记录),
-
checkpoint触发条件:时间间隔一个小时或者100w次操作,当达到合并日志文件时
1)NN将当前正在编写的日志文件edis_inprogress改名为edits_XX,
2)NN创建一个新的deis_inprogress文件继续存储命令信息
3)edits_XX被拷贝到SNN
4)SNN:edits_XX与快照文件fsimage进行合并,生成新的快照文件,并发送到NN中
5)新的快照文件替换旧的快照文件
-
当服务器断开时重连时,NN会寻找最新的快照文件(尾号最大)进行快照恢复;将edis_inprogress日志文件中的各个命令重新执行。
上传文件流程:
1.客户端向NN提出上传文件请求
2.NN查看是否可以上传:
判断HDFS上传的文件是否已经存在同名文件,上传的目录是否存在;发出请求的客户是否拥有上传权限;同时计算文件需要拆分成几个块,如何分,以及副本都放在哪个datanode上(同意请求时才计算)
当确定可以同意请求后将上述信息反馈给客户端
3.客户端根据NN反馈的信息读取上传的文件并划分,通过网络流将分好的块上传到相应的datanode上,(副本间只上传一份,别的副本通过datanode拷贝传输到相应的datanode)
4.datanode在一个数据块包括其副本上传完毕后向客户端发送反馈,让客户端继续发送下一个数据块
5.datanode向NN发送 块是否传输完毕,数据块的数字指纹
6.文件上传完后,NN将操作命令记录到日记文件中,修改内存中的源数据信息,断开与客户端的网络流
下载流程:
1.客户端向NN发送请求
2.NN判断可以同意请求后,向客户端发送反馈文件块的描述信息,位置信息
3.客户端通过反馈信息,根据就近原则,从最近的DN上下载,若当前DN损坏,顺位从下一个DN上下载。
4.客户端依次下载块信息,然后合并成一个文件
5.断开客户端和HDFS的网络流连接