一种面向分布式文件系统的文件预取/缓存方法及装置与流程

文档序号:12271466阅读:179来源:国知局
一种面向分布式文件系统的文件预取/缓存方法及装置与流程

本发明涉及文件预取与缓存领域问题,特别涉及一种面向分布式文件系统的文件预取/缓存方法及装置。



背景技术:

目前,随着移动互联网技术的飞速发展,网络数据也呈爆炸式增长,为了应对海量数据的存取所面临的各种问题,分布式存储技术也得到的快速的发展,目前比较成熟的分布式文件系统主要包括Google的GFS、Hadoop Distributed File System(HDFS)、Lustre、FastDFS、MooseFS、MogileFS、NFS以及淘宝的TFS,这些分布式文件系统应用的场景各不相同,所以它们的特点也有所差异。

这些分布式文件系统,在生产应用方面表现出来的性能各异,主要表现在从海量文件中读取某一或某些文件时的效率问题,对于这方面的问题,解决方案主要有,优化分布式文件系统本身的读取、存储机制,包括元数据的格式、文件的存放规则等,另一方面则是从分布式文件系统的外围来优化文件的读取、存储性能,主要包括文件的预取和缓存技术。本发明提出的是通过预取和缓存来提高分布式文件系统的读取性能。

对于缓存技术,基本思想是当分布式文件系统的某个文件被访问时,用内存来存放刚被读取的文件,而不是直接丢掉,这样,再次读取时,就可以直接从内存里面读取,而不用再次从分布式文件系统中读取,这样整个分布式文件系统的响应能力就会有很大的提高,但是,当读取的文件个数特别多时,不可能把所有被访问的文件都放在缓存中,因为内存大小是有限的,与之相配合的是各种不同的剔除策略,包括LRU算法、LIRS算法,LRU即最少使用页面置换算法,把最近最少使用的页面替换掉;LIRS算法通过使用两次访问同一个文件的距离(本距离指中间被访问了多少非重复文件)作为一种尺度去动态的将被访问文件进行排序,从而做出替换选择,由于分布式文件系统的文件数量比较大,所以这些缓存策略得到的缓存文件的命中率相对比较低下,不能满足某些需求。

对于预取技术,通常采用以下技术:基于访问频率的预取模型,当对Web的访问具有一定的规律,且具有历史性和相对集中的爱好,因此提出了基于组的兴趣和访问行为对未来将要访问的文件进行预测;基于数据挖掘的预取模型,利用数据挖掘技术挖掘用户的兴趣关联规则,作为对用户即将访问的页面进行预取的依据;基于流行度的预取模型,定期地统计网页的访问次数,并选取访问次数较多的网页组成流行页面集,然后根据客户最近发出的请求量的大小,从每个服务器上的流行页面集中预取相当于用户最近发出的请求量的页面放在缓存或直接送给用户,利用Zipf第1定律和第2定律对访问流行度建模,提出了基于Web流行度的预取模型,这些预取技术主要应用于Web网页的预取,对应分布式文件系统上的文件的预取则少之又少。

上面的预取方法极少应用到分布式文件系统中,但专利CN 104933110 A提出了一种基于MapReduce的数据预取方法,该专利通过性能评估来预测各计算节点的数据块处理量,并根据一系列的计算来评估哪些计算节点会出现非本地化任务,对于通过计算评估的非本地化任务,在计算节点还未申请处理该任务时就提前预取到计算节点本地,从而使得计算节点不会产生计算等待,这种预取大大提高了系统执行MapReduce任务的效率,但对于非MapReduce场景该预取规则并不适用。



技术实现要素:

针对现有技术的不足,本发明提出一种面向分布式文件系统的文件预取/缓存方法及装置。

本发明提出一种面向分布式文件系统的文件预取/缓存方法,包括:

文件缓存步骤,当客户端访问分布式文件系统中的文件时,将访问所述文件的访问时间及文件信息记录到访问日志中,并根据所述访问时间及所述文件信息判断所述文件是否进行缓存;

文件预取步骤,根据所述访问日志,取出时间段TP内所述文件的各访问时间点,并获取每个所述访问时间点的邻域,通过聚类算法计算所述文件与所述邻域内被访问文件的关联度,将与所述关联度相对应的文件以字符串的形式存放到待预取队列中,通过余弦相似度算法分别计算所述待预取队列中两两文件间的相似度,对所述待预取队列中的文件进行重新组合,并结合所述相似度,对每个所述组合进行压缩,计算每个所述组合与所述文件的总关联度,并获取所述组合中所述总关联度最大的组合,作为所要预取的一组文件。

所述文件缓存步骤包括设定所述文件被访问次数的阈值N,根据所述访问时间判断所述文件在距离当前时间T内的被访问次数num,如果所述被访问次数num大于所述阈值N,则将所述文件缓存到的分布式的缓存中,否则未缓存所述文件。

所述邻域为在某一时间点tt前后各取时间段TN,获取的时间段。

所述文件预取步骤还包括对所要预取的一组文件进行压缩处理,预取压缩后的文件到分布式的缓存。

还包括剔除文件步骤,包括:

步骤31,在队列Qf取出t时间内访问次数最少的文件,其中在分布式的缓存中按t时间内的访问次数进行排序的队列为所述队列Qf;

步骤32,以队列Qt的中间位置为临界剔除点,在所述队列Qt中找到所述t时间内访问次数最少的文件,判断其在所述队列Qt中的位置,如果访问次数最少的文件在临界剔除点的后面,且访问次数最少的文件最早被访问的时间小于临界剔除点的文件的最早访问时间,则剔除访问次数最少的文件,否则执行所述文件缓存步骤,其中在分布式的缓存中按访问时间进行排序的队列为所述队列Qt;

步骤33,在所述队列Qf中取出所述t时间内访问次数少于阈值M的文件,并执行步骤32。

本发明还提出一种面向分布式文件系统的文件预取/缓存系统,包括:

文件缓存模块,用于当客户端访问分布式文件系统中的文件时,将访问所述文件的访问时间及文件信息记录到访问日志中,并根据所述访问时间及所述文件信息判断所述文件是否进行缓存;

文件预取模块,用于根据所述访问日志,取出时间段TP内所述文件的各访问时间点,并获取每个所述访问时间点的邻域,通过聚类算法计算所述文件与所述邻域内被访问文件的关联度,将与所述关联度相对应的文件以字符串的形式存放到待预取队列中,通过余弦相似度算法分别计算所述待预取队列中两两文件间的相似度,对所述待预取队列中的文件进行重新组合,并结合所述相似度,对每个所述组合进行压缩,计算每个所述组合与所述文件的总关联度,并获取所述组合中所述总关联度最大的组合,作为所要预取的一组文件。

所述文件缓存模块包括设定所述文件被访问次数的阈值N,根据所述访问时间判断所述文件在距离当前时间T内的被访问次数num,如果所述被访问次数num大于所述阈值N,则将所述文件缓存到的分布式的缓存中,否则未缓存所述文件。

所述邻域为在某一时间点tt前后各取时间段TN,获取的时间段。

所述文件预取模块还包括对所要预取的一组文件进行压缩处理,预取压缩后的文件到分布式的缓存。

还包括文件剔除模块,包括:

步骤31,在队列Qf取出t时间内访问次数最少的文件,其中在分布式的缓存中按t时间内的访问次数进行排序的队列为所述队列Qf;

步骤32,以队列Qt的中间位置为临界剔除点,在所述队列Qt中找到所述t时间内访问次数最少的文件,判断其在所述队列Qt中的位置,如果访问次数最少的文件在临界剔除点的后面,且访问次数最少的文件最早被访问的时间小于临界剔除点的文件的最早访问时间,则剔除访问次数最少的文件,否则执行所述文件缓存模块,其中在分布式的缓存中按访问时间进行排序的队列为所述队列Qt;

步骤33,在所述队列Qf中取出所述t时间内访问次数少于阈值M的文件,并执行步骤32。

由以上方案可知,本发明的优点在于:

本发明的缓存模块能通过分析,有效的缓存以后很可能会被再次访问的文件,对于不太可能会被再次访问的文件,不予以缓存。预取模块采用聚类算法和余弦相似度算法对文件间的关联度进行计算,并结合压缩技术,能有效的进行预取问题,使预取到的文件能被有效的访问,提高预取文件的命中率。对于剔除模块,维护了两个队列,一个是按访问时间进行排序的一个队列Qt,另一个是按t时间内的访问次数进行排序的一个队列Qf,采用时间和空间上两种策略相结合以确保剔除的文件是最不可能会被再次访问的文件。

附图说明

图1为本发明方法流程图;

图2为本发明系统结构图。

具体实施方式

本发明在现有分布式文件系统之上,提供了一层分布式buffer(缓冲器),用于缓存和预取分布式文件系统中的文件,目标是能够加快分布式文件系统的读取速度。

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

本发明提出面向分布式文件系统的文件预取/缓存方法,包括下列步骤,如图1所示:

A.缓存文件,其实现方法为:

A1.客户端访问分布式文件系统中的一个文件时;

A2.将访问该文件的时间及文件信息记录到访问日志中;

A3.根据访问日志中该文件的被访问时间及即对应的文件信息判断该文件是否进行缓存。

B.预取文件,其实现方法为:

B1.当一个文件被缓存到内存中时,根据历史的访问日志,取出TP时间段内该文件的各访问时间点t1,t2,t3……tN;

B2.遍历历史访问日志,时间点的邻域是指,在某一时间点tt前后各取TN时间段,得到的时间段。取出t1邻域内的被访问文件fi 1,fi2,fi3……,组成一列,得到一条访问信息Inf1;

B3.按步骤B2分别取出t2邻域,t3邻域……tN邻域的访问信息Inf2,Inf3……InfN;

B4.运用现有的聚类算法对上述访问信息Inf1,Inf2,Inf3……InfN进行计算,得到上述缓存文件与上述时间点邻域内被访问文件的关联度r1,r2,r3……。

B5.按关联度大小对f1,f2,f3……进行排序并将文件名以字符串的形式存放到待预取队列中,根据分布式内存的大小,设定每缓存一个文件可预取文件的空间大小M,从关联文件中根据关联度从大到小截取待预取队列,使待预取队列中待预取文件的大小为p*M,p可取大于1的任意数,建议取3。

B6.利用余弦相似度算法,分别计算待预取队列中的两两文件间的相似度。余弦相似度算法的步骤为:预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。所得到的余弦值即为两个文件的相似度。

B7.对待预取队列中的文件进行重新组合,结合文件间的相似度,利用现有压缩算法,对每个组合取出压缩后的总大小为M或稍小于M大小的文件。

B8.计算B7中各个组合文件与所缓存文件的总的关联度大小,取出总关联度大小最大的一组,即为所要预取的一组文件。

B9.用现有压缩技术对B8中的得到的一组文件进行压缩处理,然后预取这些压缩文件到分布式缓存,预取结束。

C.剔除文件,其实现方法为:

当分布式内存不足时,需要从内存中剔除一些文件,剔除方法如下。

C1.分布式内存中维护两个文件队列,一个是按访问时间进行排序的一个队列Qt,另一个是按t时间内的访问次数进行排序的一个队列Qf。

C2.在Qf取出t时间内访问次数最少的文件。

C3.以Qt的中间位置为临界剔除点,在Qt中找到上述t时间内访问次数最少的文件,判断其在Qt中的位置,如果该文件在临界剔除点的后面,即该文件最早被访问的时间比临界剔除点文件的最早访问时间要早,则直接剔除该文件,该步骤结束。否则执行步骤A4-4。

C4.在Qf取出t时间内访问次数少于阈值M的文件,执行C3;

下面更进一步描述本发明步骤,本发明的目标是缓存预取分布式文件系统上的文件,提升分布式文件系统的响应速度。详细实施步骤包含执行:A、缓存文件到分布式内存;B、预取与缓存文件关联度大的文件到分布式内存。C、分布式内存不足时,剔除内存中的一些文件。具体的一种实施方式如下:

A.缓存文件,其实现方法为:

A1.当客户端访问分布式文件系统中的一个文件时;

A2.将访问该文件的时间及文件信息记录到访问日志中;

A3.根据访问日志中该文件的被访问时间判断该文件在距离当前时间T时间内的访问次数num,设定访问次数的阈值N,如果在T时间内的访问次数num大于设定的访问次数的阈值N,则把该文件缓存到的分布式的缓存中,反之则不缓存该文件。对于分布式文件系统,很多文件在较长一段时间内只被访问一次,就无需缓存这些文件,进而提高分布式内存的利用率,避免无用的缓存和剔除操作。

B.预取文件,其实现方法为:

B1.当一个文件被缓存到内存中时,根据历史访问日志,取出TP时间内该文件的各访问时间点t1,t2,t3……tN;

B2.遍历历史访问日志,时间点的邻域是指,在某一时间点tt前后各取TN时间段,得到的时间段。取出t1邻域内的被访问文件fi1,fi2,fi3……,组成一列,得到一条访问信息Inf1;

B3.按步骤B2分别取出t2邻域,t3邻域……tN邻域的访问信息Inf2,Inf3……InfN;

B4.运用现有的聚类算法对上述访问信息Inf1,Inf2,Inf3……InfN进行计算,得到上述缓存文件与上述时间点邻域内被访问文件的关联度r1,r2,r3……。

B5.按关联度大小对f1,f2,f3……进行排序并将文件名以字符串的形式存放到待预取队列中,根据分布式内存的大小,设定每缓存一个文件可预取文件的空间大小M,从关联文件中根据关联度从大到小截取待预取队列,使待预取队列中待预取文件的大小为p*M,p可取大于1的任意数,建议取3。

B6.利用余弦相似度算法,分别计算待预取队列中的两两文件间的相似度。余弦相似度算法的步骤为:预处理→文本特征项选择→加权→生成向量空间模型后计算余弦。所得到的余弦值即为两个文件的相似度。

B7.对待预取队列中的文件进行重新组合,结合文件间的相似度,利用现有压缩算法,对每个组合取出压缩后的总大小为M或稍小于M大小的文件,得到总大小为大于小于M的新组合。具体执行步骤如下:

B7-1.预取队列中的文件个数为FN个,从FN个文件中取出X个文件,保证X个文件的大小在压缩后大于M。即对FN个文件进行重新组合,得到个组合。

B7-2.利用B6计算出的两两文件的相似度,计算每个组合中相似度高的两文件进行压缩后的大小。

B7-3.把相似度高的两个文件当作一个压缩后的文件,从每个组合中进一步筛选出大小等于或稍小于M的一组文件。

B8.计算B7中各组文件与所缓存文件的总的关联度大小,取出总关联度大小最大的一组,即为所要预取的一组文件。

B9.采用aprior压缩技术对B8中的得到的一组文件进行压缩处理,然后预取这些压缩文件到分布式缓存,预取结束。

C.剔除文件,其实现方法为:

当分布式内存不足时,需要从内存中剔除一些文件,剔除方法如下。

C1.分布式内存中维护两个文件队列,一个是按访问时间进行排序的一个队列Qt,另一个是按t时间内的访问次数进行排序的一个队列Qf。

C2.在Qf取出t时间内访问次数最少的文件。

C3.以Qt的中间位置为临界剔除点,在Qt中找到上述t时间内访问次数最少的文件,判断其在Qt中的位置,如果该文件在临界剔除点的后面,即该文件最早被访问的时间比临界剔除点文件的最早访问时间要早,则直接剔除该文件,该步骤结束。否则执行步骤A4-4。

C4.在Qf取出t时间内访问次数少于阈值M的文件,执行C3;

本发明还提出一种面向分布式文件系统的文件预取/缓存系统,如图2所示,包括:

文件缓存模块,用于当客户端访问分布式文件系统中的文件时,将访问所述文件的访问时间及文件信息记录到访问日志中,并根据所述访问时间及所述文件信息判断所述文件是否进行缓存;

文件预取模块,用于根据所述访问日志,取出时间段TP内所述文件的各访问时间点,并获取每个所述访问时间点的邻域,通过聚类算法计算所述文件与所述邻域内被访问文件的关联度,将与所述关联度相对应的文件以字符串的形式存放到待预取队列中,通过余弦相似度算法分别计算所述待预取队列中两两文件间的相似度,对所述待预取队列中的文件进行重新组合,并结合所述相似度,对每个所述组合进行压缩,计算每个所述组合与所述文件的总关联度,并获取所述组合中所述总关联度最大的组合,作为所要预取的一组文件。

所述文件缓存模块包括设定所述文件被访问次数的阈值N,根据所述访问时间判断所述文件在距离当前时间T内的被访问次数num,如果所述被访问次数num大于所述阈值N,则将所述文件缓存到的分布式的缓存中,否则未缓存所述文件。

所述邻域为在某一时间点tt前后各取时间段TN,获取的时间段。

所述文件预取模块还包括对所要预取的一组文件进行压缩处理,预取压缩后的文件到分布式的缓存。

还包括文件剔除模块,包括:

步骤31,在队列Qf取出t时间内访问次数最少的文件,其中在分布式的缓存中按t时间内的访问次数进行排序的队列为所述队列Qf;

步骤32,以队列Qt的中间位置为临界剔除点,在所述队列Qt中找到所述t时间内访问次数最少的文件,判断其在所述队列Qt中的位置,如果访问次数最少的文件在临界剔除点的后面,且访问次数最少的文件最早被访问的时间小于临界剔除点的文件的最早访问时间,则剔除访问次数最少的文件,否则执行所述文件缓存模块,其中在分布式的缓存中按访问时间进行排序的队列为所述队列Qt;

步骤33,在所述队列Qf中取出所述t时间内访问次数少于阈值M的文件,并执行步骤32。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1