掌桥专利:专业的专利平台
掌桥专利
首页

一种基于分布式存储系统的大数据存储访问方法

文献发布时间:2024-04-18 20:02:18


一种基于分布式存储系统的大数据存储访问方法

技术领域

本发明涉及云存储技术领域,尤其涉及一种基于分布式存储系统的大数据存储访问方法。

背景技术

现有大数据场景下,基于大数据分析计算流程的大数据体系包含:大数据计算平台层,涵盖硬件、云计算技术与软件系统;大数据存储与管理层,包含数据的采集、数据的预处理;大数据分析计算层,涵盖数据挖掘、Hadoop等;大数据可视化层,基于大数据分析计算层对分析结果进行交互式可视化。

Hadoop是典型的大数据处理开源软件,Hadoop集群运行运行于廉价上有机器之上,形成了一整套完整的生态体系,已经成为大数据处理中的重要平台,Hadoop包含抽象文件系统的概念,定义了Hadoop抽象文件系统客户端接口,该接口的具体实现对应本地磁盘文件系统、HDFS分布式文件系统、构建在其他文件系统之上用于文件存档的文件系统、由FTP服务器支持的文件系统、由Amazon S3支持的文件系统、由Microsoft Azure支持的文件系统、由OpenStack Swift支持的文件系统等文件系统。

HDFS是一种分布式文件系统,是Hadoop生态系统的核心组件之一,HDFS类似于操作系统的文件系统,提供了海量数据的存储和管理,具有高容错性、高吞吐等优点。HDFS跨多台计算机存储,以流式数据访问模式存储超大文件。HDFS是一个主/从(Master)体系架构的分布式系统,HDFS集群至少包含1个名称节点(NameNode)、1个第二名称节点(SecondaryNameNode)和一个数据节点(DataNode),名称节点(NameNode)与数据节点(DataNode)提供了存储与管理数据的能力,用户使用该能力是通过HDFS客户端(Client)同称节点与数据节点交互以访问文件系统。

HDFS客户端(Client)实现了Hadoop抽象文件系统客户端接口。用户能够通过HDFS客户端向HDFS集群发起读写HDFS文件的请求,同时还能通过HDFS客户端执行类文件系统的命名空间操作,例如打开、关闭、重命名文件或者目录。

业界基于对象存储(Object Storage实现了标准的Hadoop文件系统,可以为Hadoop、Spark以及Tez等大数据计算框架集成对象存储提供支持,使其能够跟访问HDFS文件系统时相同,通过发送S3消息给对象存储,读写存储在对象存储上的数据。

计算存储分离的情况下,在私有云场景中,一般会运用虚拟化技术来创建多个计算集群,以支持上层大数据应用对计算的需求。Hadoop生态系统中可用的最著名的s3客户端是S3A,它适用于所有其他S3后端,通常来说,存储会使用对象存储服务来提供数据湖的共享存储后台,然后通过S3A插件来提供两者之间的连接,能够让Hadoop的应用能够无缝访问Ceph对象存储服务。

HDFS客户端(Client)向HDFS集群发起读、写、创建、删除、重命名HDFS文件的请求,使用的是HDFS集群的数据存储与管理能力。首先,HDFS本身的设计是计算资源和存储资源融合的,以一个集群来应对不同业务需求。后期随着业务体量急速增长,不同的业务对存储有不同的计算需求,业务会存在对计算资源的争抢;在后期扩容时,计算和存储无法解耦扩展,存在计算资源或者存储资源的浪费。其次,HDFS客户端(Client)读写文件需要根据位置信息建立数据流管道,数据块副本某个数据节点出现错误,错误处理会非常复杂,需要申请新的数据节点(DataNode),为数据块分配新的时间戳,使用新的时间戳建立新的数据流管道等等,增加了读写处理的时延。另外,不支持多个HDFS客户端(Client)并行写,需要租约(Lease)机制保证对HDFS文件的互斥写。租约(Lease)管理器需要维护一个线程定期检查租约是否过期,租约检查线程也需要消耗系统资源。

S3A使用对象存储的方案,以及业界实现的基于对象存储的Hadoop文件系统,大体流程是:Hadoop文件系统客户端在上传数据时,需要请求封装成HTTP然后发送给对象存储网关,然后由对象存储网关拆解后转为内部的请求发送给存储集群,实现将数据以写Hadoop文件系统内文件的方式,将数据上传至对象存储,如图1所示,以ceph对象存储为例,数据是如何上传的。因为数据的读写路径上都需要经过对象存储网关,然后再由对象存储网关把请求转发给存储集群,对象存储网关成为性能瓶颈是显然的。

Hadoop文件系统客户端无法直接将读写请求发送至存储集群,在整个IO路径上永远存在对象存储网关这一环节,由于对象存储List Objects和Rename的代价比较大,导致基于对象存储的Hadoop文件系统在文件列举、文件重命名等操作上会比HDFS性能差。

发明内容

本发明的目的是为了解决现有技术中存在Hadoop文件系统客户端无法直接将读写请求发送至存储集群,在整个IO路径上永远存在对象存储网关这一环节,由于对象存储List Objects和Rename的代价比较大,导致基于对象存储的Hadoop文件系统在文件列举、文件重命名等操作上会比HDFS性能差缺点,而提出的一种基于分布式存储系统的大数据存储访问方法。

为了实现上述目的,本发明采用了如下技术方案:

一种基于分布式存储系统的大数据存储访问方法,所述大数据存储访问方法包括如下步骤:

Σ1、类ΗΔΦΣ客户端实例初始化;

Σ2、创建文件系统;

Σ3、挂载文件系统;

Σ4、创建目录;

Σ5、创建文件;

Σ6、读写权限打开文件;

Σ7、写入文件数据;

Σ8、从文件中读取数据;

Σ9、关闭文件;

Σ10、删除文件;

Σ11、删除目录;

Σ12、卸载文件系统;

Σ13、删除文件系统。

优选的,所述步骤Σ2包括如下子步骤:

Σ21、业务线程中生成创建文件系统的任务,放入任务队列供轮询线程处理,阻塞等待任务处理结束;

Σ22、轮询线程轮询到该任务,对该任务进行处理,网使用网络通信异步方法向文件系统元数据服务器发送请求;

Σ23、请求返回后生成一个任务,将任务存放到类文件系统客队列中;

Σ24、轮询线程轮询到该任务,通知业务线程创建文件系统成功,创建文件系统流程结束;

Σ25、业务线程返回上层业务创建文件系统结果。

优选的,所述步骤Σ7还包括如下子步骤;

Σ71、检查客户端租约是否失效,文件是否未锁,如果文件锁没有丢失,进入步骤Σ72,如果失效或者文件锁丢失,进入步骤Σ75;

Σ72、获取本次写入涉及的χηυνκ,如果χηυνκ足够,进入步骤Σ73,如果χηυνκ不足,进入步骤Σ76;

Σ73、向χηυνκ的所有副本所在的数据存储节点发送消息写入数据,如果写入成功,进入步骤Σ74,如果写入失败,进入步骤Σ77;

Σ74、通知业务线程写入数据完成,写入数据流程结束;

Σ75、重新打开文件,检查文件长度,检查本次写入是否成功,如果成功,进入步骤Σ74,否则,进入步骤Σ71;

Σ76、申请χηυνκ,如果申请成功,进入步骤Σ72,如果返回文件被别的客户端锁住,进入步骤Σ74,如果返回文件锁丢失,进入步骤Σ75,如果返回其他的错误,没有超过3次,进入步骤Σ76,如果返回其他的错误,超过3次,进入步骤Σ74;

Σ77、封存(σεαλ)χηυνκ,如果返回成功,进入步骤Σ71,如果返回文件被别的客户端锁住,进入步骤Σ7,如果返回文件锁丢失,进入步骤Σ75,如果返回其他的错误,继续重试,进入步骤Σ77。

优选的,所述子步骤Σ22还包括进一步骤:

Σ221,客户端轮询线程轮询到该任务,调用处理函数对该任务进行处理,调用之前的绑定的处理函数,查询存储池是否存在,如果存在,则在该存储池中创建文件系统,使用网络通信框架的异步方法向文件系统元数据服务器发送请求,并且在此之前注册好回调函数,请求返回后调用该回调函数,生成一个任务,绑定的处理函数,将任务存放到类文件系统客户端的队列中。

优选的,所述客户端轮询线程轮询到该任务,在任务处理函数中,最终会激活创建文件系统上下文中的条件变量,创建文件系统流程结束,与创建文件系统类似,删除文件系统、挂载文件系统、卸载文件系统、创建文件、删除文件等大数据存储系统访问操作流程,也是生成任务存入任务队列,由轮询线程处理任务执行任务处理函数。

优选的,所述步骤Σ1、包括如下具体实施步骤:

Σ101、申请χλιεντιδ与λεασετιμε;

Σ102、循环检查任务队列,对任务进行处理;

Σ103、循环检查租约是否失效,如果失效,进入步骤Σ104;否则,进入步骤Σ105;

Σ104、将文件状态置为文件未锁;

Σ105、循环检查租约是否需要续约,如果需要续约,进入步骤Σ106,否则,进入步骤Σ102;

Σ106、对租约进行续约操作,进入步骤Σ102。

优选的,所述步骤Σ6还包括如下步骤:

Σ61,打开文件的时候,如果是包含了写权限,会从元数据服务器申请租约,打开成功即表示:成功获取了该文件在租约期限内的写权限,写文件的时候,开始就会检查客户端租约是否失效,如果已经失效,那么文件状态置为文件未锁;

写入的过程中,可能会丢失文件租约锁或者文件租约锁被别的客户端所占,并且,在写入的过程中,申请或者封存(表示不能再写入数据)χηυνκ,皆会向文件系统元数据服务器发送请求,此时可能会返回文件租约锁被占、文件租约锁丢失,文件状态置为文件已经被锁、文件未锁,对于文件未锁的情况,会重新打开文件,打开之后会根据文件的长度,检查本次写入是否成功。

优选的,所述步骤Σ6还包括如下步骤:

Σ62,打开文件的时候,会从文件系统服务端获取该文件已经写入数据的χηυνκ的信息,打开文件的权限包含写权限,则预申请χηυνκ,读文件会根据偏移与长度确定具体读取哪些χηυνκ,每个χηυνκ存在多个强一致副本,逐个向副本所在的数据存储节点发送消息读取数据,一旦读取到数据就不再读取下一个副本。

优选的,所述步骤Σ62的进一步步骤包括:

Σ621,写文件会根据偏移与长度确定具体写哪些χηυνκ,χηυνκ不足会向后端存储集群申请χηυνκ,返回失败,会间隔一定时间重试四次,返回成功后,类ΗΔΦΣ客户端会将申请的χηυνκ信息发送给文件系统元数据服务器,返回失败,将重试三次。

优选的,所述步骤Σ62的再一步步骤包括:

Σ622,向χηυνκ的所有副本所在的数据存储节点发送消息写入数据,某个副本写入失败表示写入χηυνκ失败,封存(σεαλ)该χηυνκ:向后端存储集群发送封存(σεαλ)请求即可,无需关注是否成功,向文件系统元数据服务器发送封存(σεαλ)请求,返回失败后继续重试,直至成功,最后,再重新选择χηυνκ继续写入。

有益效果

1、在使用对象存储方案中,增加了ΙΟ路径长度,对象存储网关会成为性能瓶颈时,本专利针对这种情况,本发明中所主张的类ΗΔΦΣ客户端,无需经过对象存储网关,而直接使用后端存储集群的数据存储能力。

2、在出现ΗΔΦΣ客户端(Xλιεντ)读写文件需要根据位置信息建立数据流管道时,错误处理会非常复杂,增加了读写处理的时延,本专利针对这种情况,类ΗΔΦΣ客户端写文件会进行文件ΙΟ拆分成χηυνκΙΟ并进行跟踪,χηυνκ某个副本写入失败,直接封存(σεαλ),重新选择χηυνκ继续写入。

3、当业界ΗΔΦΣ客户端(Xλιεντ)文件与目录操作直接访问需文件系统元数据服务器,同步等待处理完成,请求处理的吞吐量有限,基于对象存储的Ηαδοοπ文件系统在文件列举、文件重命名等操作性能差。本专利针对这些情况,上层业务请求的处理会生成任务,网络通信框架的异步请求返回后将生成任务,这些任务都会存放到队列中,等待轮询线程处理。

附图说明

图1为本发明基于Xεπη对象存储的Ηαδοοπ文件系统数据上传示意图;

图2为本发明为类ΗΔΦΣXλιεντ访问后端存储集群示意;

图3为本发明文件系统请求轮询处理示意图;

图4为本发明租约处理示意图;

图5为本发明租约失效处理示意图;

图6为本发明数据写入异常处理示意图;

图7为本发明基本流程示意图;

图8为本发明初始化流程示意图;

图9为本发明创建文件系统流程示意图;

图10为本发明写文件流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

实施例一

参照图1-10,一种基于分布式存储系统的大数据存储访问方法,所述大数据存储访问方法包括如下步骤:

Σ1、类ΗΔΦΣ客户端实例初始化;

Σ2、创建文件系统;

Σ3、挂载文件系统;

Σ4、创建目录;

Σ5、创建文件;

Σ6、读写权限打开文件;

Σ7、写入文件数据;

Σ8、从文件中读取数据;

Σ9、关闭文件;

Σ10、删除文件;

Σ11、删除目录;

Σ12、卸载文件系统;

Σ13、删除文件系统。

所述步骤Σ1、包括如下具体实施步骤:

Σ101、申请χλιεντιδ与λεασετιμε;

Σ102、循环检查任务队列,对任务进行处理;

Σ103、循环检查租约是否失效,如果失效,进入步骤Σ104;否则,进入步骤Σ105;

Σ104、将文件状态置为文件未锁;

Σ105、循环检查租约是否需要续约,如果需要续约,进入步骤Σ106,否则,进入步骤Σ102;

Σ106、对租约进行续约操作,进入步骤Σ102。

所述步骤Σ2包括如下子步骤:

Σ21、业务线程中生成创建文件系统的任务,放入任务队列供轮询线程处理,阻塞等待任务处理结束;

Σ22、轮询线程轮询到该任务,对该任务进行处理,网使用网络通信异步方法向文件系统元数据服务器发送请求;

Σ23、请求返回后生成一个任务,将任务存放到类文件系统客队列中;

Σ24、轮询线程轮询到该任务,通知业务线程创建文件系统成功,创建文件系统流程结束;

Σ25、业务线程返回上层业务创建文件系统结果。

所述子步骤Σ22还包括进一步骤:

Σ221,客户端轮询线程轮询到该任务,调用处理函数对该任务进行处理,调用之前的绑定的处理函数,查询存储池是否存在,如果存在,则在该存储池中创建文件系统,使用网络通信框架的异步方法向文件系统元数据服务器发送请求,并且在此之前注册好回调函数,请求返回后调用该回调函数,生成一个任务,绑定的处理函数,将任务存放到类文件系统客户端的队列中。

所述步骤Σ7还包括如下子步骤;

Σ71、检查客户端租约是否失效,文件是否未锁,如果文件锁没有丢失,进入步骤Σ72,如果失效或者文件锁丢失,进入步骤Σ75;

Σ72、获取本次写入涉及的χηυνκ,如果χηυνκ足够,进入步骤Σ73,如果χηυνκ不足,进入步骤Σ76;

Σ73、向χηυνκ的所有副本所在的数据存储节点发送消息写入数据,如果写入成功,进入步骤Σ74,如果写入失败,进入步骤Σ77;

Σ74、通知业务线程写入数据完成,写入数据流程结束;

Σ75、重新打开文件,检查文件长度,检查本次写入是否成功,如果成功,进入步骤Σ74,否则,进入步骤Σ71;

Σ76、申请χηυνκ,如果申请成功,进入步骤Σ72,如果返回文件被别的客户端锁住,进入步骤Σ74,如果返回文件锁丢失,进入步骤Σ75,如果返回其他的错误,没有超过3次,进入步骤Σ76,如果返回其他的错误,超过3次,进入步骤Σ74;

Σ77、封存(σεαλ)χηυνκ,如果返回成功,进入步骤Σ71,如果返回文件被别的客户端锁住,进入步骤Σ7,如果返回文件锁丢失,进入步骤Σ75,如果返回其他的错误,继续重试,进入步骤Σ77。

所述客户端轮询线程轮询到该任务,在任务处理函数中,最终会激活创建文件系统上下文中的条件变量,创建文件系统流程结束,与创建文件系统类似,删除文件系统、挂载文件系统、卸载文件系统、创建文件、删除文件等大数据存储系统访问操作流程,也是生成任务存入任务队列,由轮询线程处理任务执行任务处理函数。

所述步骤Σ6还包括如下步骤:

Σ61,打开文件的时候,如果是包含了写权限,会从元数据服务器申请租约,打开成功即表示:成功获取了该文件在租约期限内的写权限,写文件的时候,开始就会检查客户端租约是否失效,如果已经失效,那么文件状态置为文件未锁;

写入的过程中,可能会丢失文件租约锁或者文件租约锁被别的客户端所占,并且,在写入的过程中,申请或者封存(表示不能再写入数据)χηυνκ,皆会向文件系统元数据服务器发送请求,此时可能会返回文件租约锁被占、文件租约锁丢失,文件状态置为文件已经被锁、文件未锁,对于文件未锁的情况,会重新打开文件,打开之后会根据文件的长度,检查本次写入是否成功。

所述步骤Σ6还包括如下步骤:

Σ62,打开文件的时候,会从文件系统服务端获取该文件已经写入数据的χηυνκ的信息,打开文件的权限包含写权限,则预申请χηυνκ,读文件会根据偏移与长度确定具体读取哪些χηυνκ,每个χηυνκ存在多个强一致副本,逐个向副本所在的数据存储节点发送消息读取数据,一旦读取到数据就不再读取下一个副本。

所述步骤Σ62的进一步步骤包括:

Σ621,写文件会根据偏移与长度确定具体写哪些χηυνκ,χηυνκ不足会向后端存储集群申请χηυνκ,返回失败,会间隔一定时间重试四次,返回成功后,类ΗΔΦΣ客户端会将申请的χηυνκ信息发送给文件系统元数据服务器,返回失败,将重试三次。

所述步骤Σ62的再一步步骤包括:

Σ622,向χηυνκ的所有副本所在的数据存储节点发送消息写入数据,某个副本写入失败表示写入χηυνκ失败,封存(σεαλ)该χηυνκ:向后端存储集群发送封存(σεαλ)请求即可,无需关注是否成功,向文件系统元数据服务器发送封存(σεαλ)请求,返回失败后继续重试,直至成功,最后,再重新选择χηυνκ继续写入。

实施例二

在实施例一的基础上改进:本专利中,针对如下情况:大数据存储中计算资源和存储资源融合,计算和存储无法解耦扩展业务会存在对计算资源的争抢、计算资源或者存储资源的浪费,使用对象存储方案中,Ηαδοοπ文件系统客户端的数据读写路径上都需要经过对象存储网关,增加了ΙΟ路径长度,对象存储网关会成为性能瓶颈。

采取如下优化方法:本发明中所主张的类ΗΔΦΣ客户端,支持大文件的读与追加写,无需经过对象存储网关,无需使用对象存储的数据存储能力,直接使用后端存储集群能力,类ΗΔΦΣ客户端将文件ΙΟ拆分为数据存储节点的XηυνκΙΟ请求,向不同的数据存储节点发送XηυνκΙΟ,并进行跟踪。

本专利中,针对如下情况:ΗΔΦΣ客户端(Xλιεντ)读写文件需要根据位置信息建立数据流管道,数据块副本某个数据节点出现错误,需要申请新的数据节点,为数据块分配新的时间戳,使用新的时间戳建立新的数据流管道等等,错误处理会非常复杂,增加了读写处理的时延。

采取如下优化方法:本专利主张的类ΗΔΦΣ客户端会缓存文件元数据,打开文件就会获取包含的χηυνκ的信息,从其中一个副本读取到数据就不再读取下一个副本,写文件会进行文件ΙΟ拆分与跟踪,χηυνκ某个副本写入失败,直接封存(σεαλ),重新选择χηυνκ继续写入。

本专利中,针对如下情况:ΗΔΦΣ客户端(Xλιεντ)文件与目录操作直接访问需文件系统元数据服务器,同步等待文件系统元数据服务器处理完成,可以处理的请求数在一定时间内是有限的,由于对象存储Λιστ

采取如下优化方法:本专利主张的类ΗΔΦΣ客户端处理上层业务请求,生成创建文件系统操作任务,将任务存放到队列中,等待轮询线程处理,轮询线程轮询到该任务,调用处理函数对该任务进行处理,使用网络通信框架的异步方法向文件系统元数据服务器发送请求,请求返回后生成任务,将任务存放到队列中,等待轮询线程处理。

本专利中,针对如下情况:支持多个ΗΔΦΣ客户端(Xλιεντ)并行写,需要租约(Λεασε)机制保证对ΗΔΦΣ文件的互斥写,租约(Λεασε)管理器需要维护一个线程定期检查租约是否过期,租约检查线程也需要消耗系统资源。

采取如下优化方法:轮询线程会循环检查租约是否失效,会处理租约更新:判断是否需要更新租约,如果需要更新租约,向元数据服务器发送消息更新租约,以写权限打开文件就获取了在租约期限内的写权限,写文件的时候,租约是失效,文件状态置为文件未锁,会重新打开文件,继续写入。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

相关技术
  • 识别大数据存储系统中的低访问度存储设备的方法及系统
  • 一种用于确定大数据存储系统的运行状态的方法及系统
  • 一种在大数据存储系统中进行数据混合存储的方法及系统
  • 一种用于确定大数据存储系统的数据平衡性的方法及系统
  • 一种基于分布式文件系统的大数据存储访问系统及方法
  • 一种基于分布式文件系统的大数据存储访问系统及方法
技术分类

06120116579840