一种分布式文件系统文件数据块传输效率优化方法及系统技术方案

技术编号:23445589 阅读:28 留言:0更新日期:2020-02-28 19:50
本发明专利技术提供一种分布式文件系统文件数据块传输效率优化方法及系统,包括如下步骤:向主元数据节点发送文件查询请求;获取主元数据节点返回的数据块元数据信息;将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池;检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配;直至线程池所有任务完成,文件下载完毕.通过采用一个写入多个读取的读写算法,不暂停所有任务,只需暂停最大的任务,不中断下载,保证了负载均衡和数据传输效率,使文件数据块传输效率提高,提高集群系统性能。

An optimization method and system of file data block transmission efficiency in distributed file system

【技术实现步骤摘要】
一种分布式文件系统文件数据块传输效率优化方法及系统
本专利技术涉及分布式文件系统数据传输
,具体涉及一种分布式文件系统文件数据块传输效率优化方法及系统。
技术介绍
HDFS是基于本地文件系统实现的分布式文件系统,是一种覆盖性文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。当前HDFS文件下载是从HDFS读取文件内容写入本地文件,首先是生成一个FSDatalnputStream对象,FSDataInputStream:读取分布式文件,使用read方法,传入要下载的文件目录,再通过read()方法,读取PositionCache对象中存储的pos,当pos的值大于这个Block的结尾,调用blockSeekTo()方法与存有下一个Block的DataNode建立Socket连接并在该DataNode上生成Java.DataInputStream对象读取该文件块的内容,循环执行该过程直到pos等于文件大小文件下载完毕。当前HDFS下载文件方式并行下载数据块的方式效率已经比较高了,但数据块并行下载的速率还是依赖数据块Size、DataNode负载等因素、网络带宽等固有因素,且数据块下载Task算法过程中因读取到的数据写入本地文件操作优先级高,因此写操作开始会暂停大量Task进程,导致读取进程暂停,耗费时间。
技术实现思路
针对当前HDFS下载的速率还是依赖数据块Size、DataNode负载等因素、网络带宽等固有因素,且数据块下载Task算法过程中因读取到的数据写入本地文件操作优先级高,因此写操作开始会暂停大量Task进程,导致读取进程暂停,耗费时间的问题,本专利技术提供一种分布式文件系统文件数据块传输效率优化方法及系统。本专利技术的技术方案是:一方面,一种分布式文件系统文件数据块传输效率优化方法,包括如下步骤:向主元数据节点发送文件查询请求;获取主元数据节点返回的数据块元数据信息;将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池;检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配;直至线程池所有任务完成,文件下载完毕。优选地,所述的获取主元数据节点返回的数据块元数据信息步骤中,主元数据节点以二维数组的形式返回的数据块元数据信息,其中,数组的第一维存储数据块描述信息,第二维存储数据块的数据节点地址。优选地,所述的将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池的步骤之前还包括:从二维数组的第二维获取数据块的数据节点的地址;检测数据节点网络,若不能连通跳转到步骤:从二维数组的第二维获取数据块的数据节点地址;否则,将连通的数据节点放入实时数据节点数组,数组长度为所述的设定长度值。优选地,所述的将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池的步骤包括:S61:读取缓冲区大小并开辟缓冲区大小长度空间;S62:连接数据节点发送数据块ID以及距离文件开头的绝对偏移量,建立输入流;S63:获取自身任务锁;S64:若已下载字节数等于下载末点字节偏移量与下载起点字节偏移量的差值加一,则设置完成任务的标记属性为true;S65:若任务提前结束的标记属性为true或完成任务的标记属性为true,执行步骤S68;否则执行S66;S66:从输入流读取预设值个字节,所述的预设值取缓冲区大小值和字节偏移量比较的较小值;S67:释放任务锁,执行步骤S63;S68:计算并更新该任务的平均速率和剩余下载时间。优选地,所述的检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配的步骤包括:S71:检测线程池中是否有任务完成,若否跳转S78;否则执行S72;S72:释放任务锁将任务重新命名;S73:若检测到重新命名的已完成任务的任务提前结束的标识属性为true,执行步骤S71;否则执行下一步;S74:计算任务的平均速率和剩余下载时间;S75:设置剩余下载时间最大的任务为最差任务并获取任务锁;S76:若最差任务的完成任务的标识属性为true,执行步骤S78,否则执行下一步;S77:比较任务的剩余下载时间与设置的分割时间的大小,根据比较结果进行任务处理;S78:结束。优选地,所述的步骤S77比较任务的剩余下载时间与分割时间的大小,根据比较结果进行任务处理,具体包括:若任务的剩余下载时间小于分割时间进行任务替换;若任务的剩余下载时间大于分割时间进行任务分裂。优选地,所述的若任务的剩余下载时间小于分割时间进行任务替换的具体步骤包括:若已完成任务的平均速率大于最差任务的平均速率,则将最差任务的已下载字节数和起点字节偏移量的和赋给已完成任务的起点字节偏移量;将最差任务的末点字节偏移量作为已完成任务的末点字节偏移量,设置最差任务的任务提前结束的标记属性为true,并且把已完成任务放入线程池。优选地,所述的若任务的剩余下载时间大于分割时间进行任务分裂的步骤具体包括:S771:按平均速率比重新设定最差任务的末点字节偏移量,同时新建一个任务,设置新建任务的起点字节偏移量为最差任务的重新设定后的末点字节偏移量加一,新建任务的点字节偏移量为最差任务重新设定前的末点字节偏移量;S772:将新建的任务放入线程池;S773:释放任务锁,最差任务的下载过程中将得到锁继续运行;S774:跳转执行步骤S71:检测线程池中是否有任务完成。采用一个写入多个读取的读写算法,任务分配器类是唯一的写入,读取是任务类,任务对象之间不相关,但当一个任务完成时候,触发任务分配器的分配方法就像写入要进行写操作一样。通常采用写入优先算法来减少写入等待时间,本专利技术不暂停所有任务,只需暂停最大的任务,不中断下载。另一方面,本专利技术技术方案提供一种分布式文件系统文件数据块传输效率优化系统,包括查询请求发送模块、元数据信息获取模块、传输处理模块、优化处理检测模块;请求发送模块,向主元数据节点发送文件查询请求;元数据信息获取模块,获取主元数据节点返回的数据块元数据信息;其中,主元数据节点以二维数组的形式返回的数据块元数据信息;传输处理模块,将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将任务线程放入线程池;优化处理检测模块,检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配;直至线程池所有任务完成,文件下载完毕。优选地,该系统还包括数据节点地址获取模块、网络检测处理模块;数据节点地址本文档来自技高网...

【技术保护点】
1.一种分布式文件系统文件数据块传输效率优化方法,其特征在于包括如下步骤:/n向主元数据节点发送文件查询请求;/n获取主元数据节点返回的数据块元数据信息;/n将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池;/n检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配;/n直至线程池所有任务完成,文件下载完毕。/n

【技术特征摘要】
1.一种分布式文件系统文件数据块传输效率优化方法,其特征在于包括如下步骤:
向主元数据节点发送文件查询请求;
获取主元数据节点返回的数据块元数据信息;
将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池;
检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配;
直至线程池所有任务完成,文件下载完毕。


2.根据权利要求1所述的一种分布式文件系统文件数据块传输效率优化方法,其特征在于所述的获取主元数据节点返回的数据块元数据信息步骤中,主元数据节点以二维数组的形式返回的数据块元数据信息,其中,数组的第一维存储数据块描述信息,第二维存储数据块的数据节点地址。


3.根据权利要求2所述的一种分布式文件系统文件数据块传输效率优化方法,其特征在于所述的将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池的步骤之前还包括:
从二维数组的第二维获取数据块的数据节点的地址;
检测数据节点网络,若不能连通跳转到步骤:从二维数组的第二维获取数据块的数据节点地址;
否则,将连通的数据节点放入实时数据节点数组,数组长度为所述的设定长度值。


4.根据权利要求1所述的一种分布式文件系统文件数据块传输效率优化方法,其特征在于所述的将数据块分解成设定长度值个区域同时生成对应的获取自身任务锁的任务线程并将所述的任务线程放入线程池的步骤包括:
S61:读取缓冲区大小并开辟缓冲区大小长度空间;
S62:连接数据节点发送数据块ID以及距离文件开头的绝对偏移量,建立输入流;
S63:获取自身任务锁;
S64:若已下载字节数等于下载末点字节偏移量与下载起点字节偏移量的差值加一,则设置完成任务的标记属性为true;
S65:若任务提前结束的标记属性为true或完成任务的标记属性为true,执行步骤S68;否则执行S66;
S66:从输入流读取预设值个字节,所述的预设值取缓冲区大小值和字节偏移量比较的较小值;
S67:释放任务锁,执行步骤S63;
S68:计算并更新该任务的平均速率和剩余下载时间。


5.根据权利要求1所述的一种分布式文件系统文件数据块传输效率优化方法,其特征在于所述的检测到线程池中有任务完成时释放任务锁将任务重新命名再重新执行任务分配的步骤包括:
S71:检测线程池中是否有任务完成,若否跳转S78;否则执行S72;
S72:释放任务锁将任务重新命名;
S73:若检测到重新命名的已完成任务的任务提前结束的标识属性为true,执行步骤S71;否则执行下一步;
S74:计算任务的平均速率和剩余下载时间;
S75:设置剩余下载时间最大的任务为最差任务并获取任务锁;...

【专利技术属性】
技术研发人员:张东东
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1