本发明涉及计算机网络技术领域,具体涉及一种基于大数据的文件夹断点续传方法。
背景技术:
在当今大数据时代下,各行各业都在使用大数据技术,每天可能有大量的文件夹或文件需要上传到大数据平台,所以大数据文件夹或文件的上传技术也成为大数据不可或缺的技术。大数据是一种以集群模式的方式运作,集群之间数据交互都是通过网络传输,所以网络的稳定性直接影响大数据可用性。随着上传的文件夹或文件越来越多,数据量越来越大,上传花费的时间也越来越多,文件夹上传的效率也显得越来越重要。为了提高大数据文件夹的上传效率,提供一种基于大数据的文件夹断点续传方法则显得尤为重要。
技术实现要素:
本发明的目的在于克服文件夹在上传失败后,需从头开始重新上传文件夹,严重影响上传效率的缺陷,提供一种基于大数据的文件夹断点续传方法。
本发明的目的通过下述技术方案现实:一种基于大数据的文件夹断点续传方法,包括以下步骤:
步骤1:客服端选择待上传文件夹,并向namenode服务器发送文件上传请求;
步骤2:namenode服务器解析并获取待上传文件夹的协议头信息,同时根据获取的协议头信息生成该待上传文件夹的数据信息;
步骤3:namenode服务器根据生成的数据信息,查询内存数据库中是否存在相同的信息记录;是,namenode服务器从内存数据库中获取该待上传文件夹上一次传输的记录信息,并执行步骤5;否,执行步骤4;
步骤4:namenode服务器将步骤2中生成的该待上传文件夹的数据信息存入内存数据库中,并且返回上传指令给客服端,客服端开始将文件夹中的文件上传到namenode服务器的临时目录中,执行步骤6;
步骤5:namenode服务器根据该待上传文件夹上一次传输的记录信息返回上传指令给客服端,客服端根据上传指令将文件夹中剩余未上传的文件上传到namenode服务器的临时目录中,执行步骤6;
步骤6:文件成功上传到namenode服务器的临时目录后,namenode服务器再将该文件上传到大数据平台,同时删除内存数据库里的相应文件记录数据和临时目录中相应的文件,结束上传;当文件没有成功上传到namenode服务器的临时目录时,则返回步骤1。
进一步的,所述步骤2中namenode服务器生成的数据信息包括:文件夹dir_id、文件夹名称、文件id、文件名称、文件路径path、文件上传的断点位置offset、是否成功上传的标识以及文件长度的数据信息。
所述步骤3中namenode服务器根据生成的文件夹dir_id,查询内存数据库中是否存在该文件夹dir_id的信息记录。
所述步骤3中namenode服务器获取该待上传文件夹上一次传输的记录信息包括:文件夹dir_id、文件id、文件上传的断点位置offset、是否成功上传的标识以及文件长度。
所述步骤6中namenode服务器通过大数据dfsoutputstream接口将成功上传到临时目录上的文件上传到大数据平台。
本发明与现有技术相比具有以下优点及有益效果:本发明将生成的待上传文件夹的数据信息存入namenode服务器的内存数据库中,从而对namenode服务器进行改造,使服务器支持文件夹的断点续传;当文件夹在上传的过程中其内部的文件出现上传失败时,下一次上传则可以从断点位置开始将剩余未上传的文件进行上传,而无需从头开始重新上传文件夹,因此其极大的提高了文件夹的上传效率。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式并不限于此。
实施例
本发明公开的基于大数据的文件夹断点续传方法,包括以下步骤:
首先,用户从客服端选择需要上传到大数据平台的文件夹,并向namenode服务器发送文件上传请求。namenode服务器响应客服端的上传请求,且解析并获取待上传文件夹的协议头信息,同时,namenode服务器根据获取的协议头信息生成该待上传文件夹的文件夹dir_id、文件夹名称、文件id、文件名称、文件路径path、文件上传的断点位置offset、是否成功上传的标识以及文件长度的数据信息;该文件夹dir_id不文件夹id,是文件夹的唯一身份。
其次,namenode服务器根据生成的文件夹dir_id,查询其内存数据库中是否存在该文件夹dir_id的信息记录。
如果内存数据库中存在该文件夹dir_id的信息记录,则说明该待上传文件夹在之前已被上传过,并且在上传的过程中被中断,即上传失败;此时namenode服务器从其内存数据库中获取该待上传文件夹上一次传输失败时的文件夹dir_id、文件id、文件上传的断点位置offset、是否成功上传的标识以及文件长度的数据信息,并根据获取到的数据信息向客服端返回相应的上传指令,而客服端则根据返回的上传指令从断点位置开始,将文件夹中剩余未上传的文件上传到namenode服务器的临时目录中。因此,本发明无需从头开始重新上传文件夹,从而极大的提高了文件夹的上传效率。
如果内存数据库中不存在该文件夹dir_id的信息记录,则说明该待上传文件夹是首次上传;此时namenode服务器则将生成的该待上传文件夹的文件夹dir_id、文件夹名称、文件id、文件名称、文件路径path、文件上传的断点位置offset、是否成功上传的标识以及文件长度的数据信息存入其内存数据库中,并且返回上传指令给客服端,客服端根据上传指令将该待上传文件夹中的文件重头开始上传到namenode服务器的临时目录中。
最后,当文件成功上传到namenode服务器的临时目录后,即namenode服务器检测到文件成功上传到其临时目录后,该namenode服务器将其内存数据库中相应文件的上传状态更新为上传成功,并且namenode服务器通过大数据dfsoutputstream接口将成功上传到临时目录上的文件上传到大数据平台,同时删除内存数据库中该文件的记录数据和临时目录中相应的文件,结束上传。
当文件没有成功上传到namenode服务器的临时目录时,即namenode服务器检测到文件没有成功上传到其临时目录时,namenode服务器将其内存数据库中该没有上传成功的文件的上传状态更新为上传失败,而内存数据库里的相应文件记录数据和临时目录中相应的文件则不会删除,此时客服端则重新向namenode服务器发送文件上传请求,对剩余未上传成功的文件进行重新上传,即返回上述步骤。
如上所述,便可很好的实现本发明。