[发明专利]适用于分布式文件系统的文件随机写方法及系统有效

专利信息
申请号: 201910973982.5 申请日: 2019-10-14
公开(公告)号: CN110795407B 公开(公告)日: 2022-06-10
发明(设计)人: 沈晨;杜真真;王敬平;黄子君;徐文远;周洁;褚少鹤 申请(专利权)人: 华东计算技术研究所(中国电子科技集团公司第三十二研究所)
主分类号: G06F16/172 分类号: G06F16/172;G06F16/182
代理公司: 上海段和段律师事务所 31334 代理人: 李佳俊;郭国中
地址: 201800 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 适用于 分布式 文件系统 文件 随机 方法 系统
【权利要求书】:

1.一种适用于分布式文件系统的文件随机写方法,其特征在于,包括:

步骤1:将HDFS的写接口更新成支持随机写模式,使随机写操作仅影响直接修改的块或者有限的相邻块;

步骤2:扩展HDFS数据传输协议,使客户端可访问任意的数据分块;

步骤3:更新服务端数据包处理、更新校验值计算,获取数据副本更新、校验值更新;

所述步骤3包括:

步骤3.1:服务端收到Packet包后解析包头,获取该包中数据dataBuf、校验值checksumBuf、校验类型、校验长度bytesPerChecksum以及该包中数据在当前数据块的起始位置firstByteInBlock;

步骤3.2:计算数据块末尾位置offsetInBlock;

步骤3.3:调用adjustBlkAndCrcFilePosition传入firstByteInBlock值调整指向副本文件和校验文件的写文件句柄偏移位置;

步骤3.4:如果该数据包不覆盖磁盘上原始数据内容,则判断当前磁盘上最后一个校验是否为完整的chunk,获取当前校验完整信息或者当前校验不完整信息;

步骤3.5:根据当前校验完整信息,将数据包中的校验数据直接写入校验文件;

步骤3.6:根据当前校验不完整信息,则进行重新校验,从副本文件中读取不完整校验的数据,起始位置为(onDiskLen/bytesPerChecksum)*bytesPerChecksum,数据长度partialChunkSizeOnDisk为onDiskLen%bytesPerChecksum;

步骤3.7:从数据包中取出部分数据与磁盘中读取的数据拼成一个chunk,并计算出校验值,移动校验文件写句柄,将新的校验值覆盖旧校验值;

步骤3.8:如果数据包在填满一个chunk后,仍有剩余数据时,将剩余数据重新计算校验,并将校验值写入校验文件末尾;

步骤3.9:如果该数据包覆盖当前副本内容,则判断数据包起始位置和末尾位置所在的chunk是否需要重新校验;

步骤3.10:数据包起始位置所在chunk校验:从上一个chunk边界开始从副本文件中读取partialChunkSizeOnDisk长度数据和数据包中数据拼成一个chunk,并计算新的校验值;

步骤3.11:如果没有拼满一个chunk,则从offsetInBlock开始,从磁盘中读取副本数据,拼成一个chunk,若依然无法拼满一个chunk,则以零填充;

步骤3.12:校验数据包末尾位置所在chunk。

2.根据权利要求1所述的适用于分布式文件系统的文件随机写方法,其特征在于,所述步骤1包括:

步骤1.1:在DFSOutputStream类中,增加文件偏移方法seek,传入文件偏移量offset,并在方法中调用刷新或关闭当前数据管道中数据节点的连接;

步骤1.2:新增成员变量positonCurBlock用于记录当前数据块中的偏移量;

步骤1.3:新增成员变量curFileOffset用于记录当前文件中的偏移量;

步骤1.4:在seek方法中,根据传入的文件偏移量offset和当前文件偏移量;curFileOffset判断是否属于同一个数据块,获取同数据块判断结果信息或者不同数据块结果判断信息;

步骤1.5:根据同数据块判断结果信息,调用flushBuffer刷新数据,然后更新bytesCurBlock变量,记录下个数据包在数据块的偏移值;

步骤1.6:调用endBlock关闭客户端与当前数据节点的通信连接。

3.根据权利要求1所述的适用于分布式文件系统的文件随机写方法,其特征在于,所述步骤2包括:

步骤2.1:根据seek方法中发送过来的标志,DataStreamer线程中将关闭当前数据节点的连接并进行数据管道更新;

步骤2.2:根据curFileOffset向NameNode请求数据节点,与新数据节点建立数据连接;

步骤2.3:修改成员变量bytesCurBlock初始值,bytesCurBlock为传入的随机写位置在设定数据块中的位置;

步骤2.4:比较bytesCurBlock与数据块大小的值,判断数据块是否写满,获取数据块写满结果信息或者数据块未写满结果信息。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东计算技术研究所(中国电子科技集团公司第三十二研究所),未经华东计算技术研究所(中国电子科技集团公司第三十二研究所)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910973982.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top