基于分布式文件系统的文件读取、写入方法及节点服务器的制造方法

文档序号:9865533阅读:477来源:国知局
基于分布式文件系统的文件读取、写入方法及节点服务器的制造方法
【技术领域】
[0001] 本发明涉及一种文件处理的技术领域,具体涉及一种基于分布式文件系统的文件 读取方法、一种基于分布式文件系统的文件写入方法、W及一种节点服务器。
【背景技术】
[0002] 随着信息技术的快速发展,海量的信息需要被可靠存储的同时,还要满足被大量 的使用者快速访问的需求。传统的存储方案已经从构架上越来越难W适应近几年来的 业务的飞速发展,成为了业务发展的瓶颈和障碍,此时皿FS化adoop Distributed File System,化doop分布式文件系统)应运而生。
[0003] 皿FS是通过一个高效的分布式算法,将数据的访问和存储分布在大量服务器之 中,在可靠地多备份存储的同时还能将访问分布在集群中的各个服务器之上,是传统存储 构架的一个颠覆性的发展。
[0004] 皿FS对数据存储的最小单位为块化lock),皿FS会将其存储的大文件打散成很 多block。皿FS在进行block读写的时候是W packet为单位进行的,每一个packet由若 干个chunk (chunk是进行数据校验的基本单位)组成,对每一个chunk生成一个校验和 (checksum)并将校验和进行存储(在默认情况下一个chunk的大小是5^byte,生成的校 验和是4byte)。参考图1所示的block存储方式,每个block分为数据块文件化lock文 件)W及其对应的数据块验证文件(meta文件),读取block文件中的数据时,首先从meta 文件的checksum header中确定校验算法等信息,继而读取block文件对应的内容,最后读 取meta文件中的校验和信息。
[0005] 从上述流程中可W看出,一次block文件的读取过程,涉及到3次磁盘1/0(输入 输出)。在随机读取过程中,若每次磁盘操作需要约10ms,3次就是30ms,性能非常低下。

【发明内容】

[0006] 鉴于上述问题,提出了本发明W便提供一种克服上述问题或者至少部分地解决上 述问题的一种基于分布式文件系统的文件读取方法、一种基于分布式文件系统的文件写入 方法和相应的一种节点服务器。
[0007] 依据本发明的一个方面,提供了一种基于分布式文件系统的文件读取方法,所述 方法包括:
[0008] 数据节点服务器接收客户端发送的数据访问请求,所述数据访问请求包括需要读 取的目标数据块的信息;
[0009] 获得与所述目标数据块的信息匹配的目标数据块,所述目标数据块包括标识信息 W及第一数据信息,所述标识信息包括校验属性信息;
[0010] 将所述校验属性信息W及所述第一数据信息发送至所述客户端。
[0011] 可选地,所述第一数据信息包括分片数据chunk W及对应的校验和数据 checksum,其中,所述分片数据chunk W及所述校验和数据checksum存储在磁盘的同一个 存储介质中。
[0012] 可选地,将所述校验属性信息W及所述第一数据信息发送至所述客户端的步骤包 括:
[0013] 从所述目标数据块的标识信息中读取所述校验属性信息发送至所述客户端;
[0014] 从所述存储介质中读取预设大小的分片数据chunk W及对应的校验和数据 checksum发送至所述客户端。
[0015] 可选地,所述目标数据块的信息包括目标数据块ID,目标数据块的时间戳 GenerationStamp,所述获得与所述目标数据块的信息匹配的目标数据块的步骤包括:
[0016] 依据所述目标数据块ID W及所述目标数据块的时间戳GenerationStamp,遍历磁 盘中存储的数据块,所述数据块包括数据块ID W及数据块时间戳;
[0017] 查找所述数据块ID与所述目标数据块ID相同,W及所述数据块时间戳与所述目 标数据块的时间戳GenerationStamp相同的数据块作为目标数据块。
[0018] 可选地,所述校验属性信息包括校验和版本Inlinechecksumversion,校验和类型 checksumtype, W及每个校验和字节数 bytesPerOiecksum。
[0019] 可选地,所述目标数据块的信息包括目标数据块的块内偏移量startOff set W及 目标数据块的长度,所述预设大小为第一数据包packet的大小,所述从所述存储介质中读 取预设大小的分片数据chunk W及对应的校验和数据checksum发送至所述客户端的步骤 包括:
[0020] 子步骤S11,创建第一数据包packet ;
[0021] 子步骤S12,依据所述目标数据块的块内偏移量startOffset计算起始位置;
[0022] 子步骤S13,从所述起始位置开始,在所述存储介质中依次读取每个分片数据 chunk W及与所述分片数据chunk对应的校验和数据checksum到所述第一数据包packet 中,直到填满所述第一数据包packet ;
[0023] 子步骤S14,将所述第一数据包packet发送至客户端中;
[0024] 子步骤S15,重复上述子步骤S11至子步骤S14,直到发送至客户端的数据的大小 等于所述目标数据块的长度。
[00巧]可选地,所述校验和数据checksum在所述存储介质中的位置位于对应的分片数 据chunk的存储位置之后,位于所述对应的分片数据chunk的下一个分片数据chunk的存 储位置之前。
[0026] 可选地,在所述获得与所述目标数据块的信息匹配的目标数据块的步骤之前,还 包括:
[0027] 依据所述数据访问请求建立与所述客户端的socket连接。
[0028] 根据本发明的另一方面,提供了一种基于分布式文件系统的文件写入方法,所述 方法包括:
[0029] 数据节点服务器接收客户端发送的第二数据包packet,所述第二数据包packet 中包括目标数据块ID、校验属性信息W及第二数据信息;
[0030] 依据所述目标数据块ID定位对应的目标数据块;
[0031] 在所述目标数据块ID中添加所述校验属性信息,生成所述目标数据块的标识信 息;
[0032] 将所述第二数据信息写入所述目标数据块中。
[0033] 可选地,所述第二数据信息包括多个分片数据chunk, W及分别与所述多个分片数 据chunk对应的校验和数据checksum,所述将所述第二数据信息写入所述目标数据块中的 步骤为:
[0034] 将所述分片数据chunk W及与所述分片数据chunk对应的校验和数据checksum 写入所述目标数据块ID对应的目标数据块中,其中,所述分片数据chunk W及与所述分片 数据chunk对应的校验和数据checksum存储在磁盘的同一存储介质中。
[0035] 可选地,所述校验属性信息包括校验和版本Inlinechecksumversion,校验和类型 checksumtype, W及每个校验和字节数 bytesPerOiecksum。
[0036] 可选地,在所述将所述第二数据信息写入所述目标数据块中的步骤之后,还包 括:
[0037] 当前数据节点服务器将所述第二数据包packet传递至预先生成的节点队列中的 下一数据节点服务器中。
[0038] 可选地,所述方法还包括:
[0039] 生成响应信息,所述响应信息为告知所述客户端当前第二数据包packet处理完 成的信息;
[0040] 将所述响应信息返回所述客户端。
[0041] 根据本发明的另一方面,提供了一种节点服务器,所述服务器包括:
[0042] 请求接收模块,适于接收客户端发送的数据访问请求,所述数据访问请求包括需 要读取的目标数据块的信息;
[0043] 定位模块,适于获得与所述目标数据块的信息匹配的目标数据块,所述目标数据 块包括标识信息W及第一数据信息,所述标识信息包括校验属性信息;
[0044] 数据发送模块,适于将所述校验属性信息W及所述第一数据信息发送至所述客户 端。
[0045] 可选地,所述第一数据信息包括分片数据chunk W及对应的校验和数据 checksum,其中,所述分片数据chunk W及所述校验和数据checksum存储在磁盘的同一个 存储介质中。
[0046] 可选地,数据发送模块包括:
[0047] 属性信息读取子模块,适于从所述目标数据块的标识信息中读取所述校验属性信 息发送至所述客户端;
[0048] 数据读取子模块,适于从所述存储介质中读取预设大小的分片数据chunk W及对 应的校验和数据checksum发送至所述客户端。
[0049] 可选地,所述目标数据块的信息包括目标数据块ID,目标数据块的时间戳 GenerationStamp,所述定位模块还适于:
[0050] 依据所述目标数据块ID W及所述目标数据块的时间戳GenerationStamp,遍历磁 盘中存储的数据块,所述数据块包括数据块ID W及数据块时间戳;
[0051] 查找所述数据块ID与所述目标数据块ID相同,W及所述数据块时间戳与所述目 标数据块的时间戳GenerationStamp相同的数据块作为目标数据块。
[0052] 可选地,所述校验属性信息包括校验和版本Inlinechecksumversion,校验和类型 checksumtype, W及每个校验和字节数 bytesPerOiecksum。
[0053] 可选地,所述目标数据块的信息包括目标数据块的块内偏移量startOffset W及 目标数据块的长度,所述预设大小为第一数据包packet的大小,所述数据读取模块还适 于:
[0054] 创建第一数据包packet ;
[00巧]依据所述目标数据块的块内偏移量startOffset计算起始位置;
[0056] 从所述起始位置开始,在所述存储介质中依次读取每个分片数据chunk W及与所 述分片数据chunk对应的校验和数据checksum到所述第一数据包packet中,直到填满所 述第一数据包packet ;
[0057] 将所述第一数据包packet发送至客户端中。
[0058] 可选地,所述校验和数据checksum在所述存储介质中的位置位于对应的分片数 据chunk的存储位置之后,位于所述对应的分片数据chunk的下一个分片数据chunk的存 储位置之前。
[0059] 可选地,所述节点服务器还包括:
[0060] 连接建立模块,适于依据所述数据访问请求建立与所述客户端的socket连接。
[0061] 根据本发明的另一方面,提供了一种节点服务器,所述节点服务器包括:
[0062] 数据接收模块,适于接收客户端发送的第二数据包packet,所述第二数据包 packet中包括目标数据块ID、校验属性信息W及第二数据信息;
[0063] 数据块定位模块,适于依据所述目标数据块ID定位对应的目标数据块;
[0064] 标识信息生成模块,适于在所述目标数据块ID中添加所述校验属性信息,生成所 述目标数据块的标识信息;
[0065] 写入模块,适于将所述第二数据信息写入所述目标数据块中。
[0066] 可选地,所述第二数据信息包括多个分片数据chunk, W及分别与所述多个分片数 据chunk对应的校验和数据checksum,所述写入模块还适于:
[0067] 将所述分片数据chunk W及与所述分片数据chunk对应的校验和数据checksum 写入所述目标数据块ID对应的目标数据块中,其中,所述分片数据chunk W及与所述分片 数据chunk对应的校验和数据checksum存储在磁盘的同一存储介质中。
[0068] 可选地,所述校验属性信息包括校验和版本Inlinechecksumversion,校验和类型 checksumtype, W及每个校验和字节数 bytesPerOiecksum。
[0069] 可选地,所述节点服务器还包括:
[0070] 数据传递模块,适于当前数据节点服务器将所述第二数据包packet传递至预先 生成的节点队列中的下一数据节点服务器中。
[0071] 可选地,所述节点服务器还包括:
[0072] 响应信息生成模块,适于生成响应信息,所述响应信息为告知所述客户端当前第 二数据包packet处理完成的信息;
[0073] 响应信息发送模块,适于将所述响应信息返回所述客户端。
[0074] 在本发明实
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1