一种分布式存储系统中海量数据的冷热判断方法与流程

文档序号:17721349发布日期:2019-05-22 02:11阅读:605来源:国知局
本发明涉及数据存储
技术领域
:,特别涉及一种分布式存储系统中海量数据的冷热判断方法。
背景技术
::随着互联网、云计算、物联网等技术的广泛发展和应用,数据呈现出爆炸性增长,时时刻刻都会产生海量的数据需要处理及存储,这对存储系统的性能和可靠性提出了巨大的挑战。海量数据的存储目前普遍使用分布式存储解决方案,比较著名的分布式存储系统有谷歌的gfs(googlefilesystem)、gfs的开源版本hdfs(hadoopdistributedfilesystem)、微软的was(windowsazurestorage)以及ceph等。但统计数据显示,分布式存储系统中绝大部分数据属于冷数据,很少被访问,访问主要集中于少量的热数据。因此,区分分布式存储系统中的热数据和冷数据并分别对其进行管理是提高分布式系统性能的重要手段。区分数据的冷热需关注两种属性:一是数据访问的时刻与当前的间隔,二是数据在单位时间内的访问频率。现有的分析确定分布式存储系统中数据冷热属性的方法主要是记录数据的访问时间,然后再根据当前时间与预设的时间间隔来计算上述两个参数。然而随着数据规模的增加,内存中将无法记录海量的数据访问信息。这种方法在处理海量数据访问时,会占用大量的计算资源,并带来大量的存储开销,当超过内存大小时会导致过多的磁盘io,严重影响系统性能。技术实现要素:本发明的目的在于提供一种分布式存储系统中海量数据的冷热判断方法,以解决上述问题。为实现上述目的,本发明采用以下技术方案:一种分布式存储系统中海量数据的冷热判断方法,包括以下步骤:步骤1,构建一个分布式存储系统,并确定该分布式系统的数据访问方式;步骤2,在内存中建立一个散列表,用以记录该分布式系统的数据访问情况,一共采用v个散列表,其中负责记录当前数据访问信息的散列表cht共有m位,每一位大小都为bits,故其占用的空间大小为m×vbits;步骤3,选取k个均匀的哈希函数为dataid进行散列;步骤4,将步骤3中的哈希结果映射到散列表的对应位置上,用于统计映射到这一位的数据被访问的总次数。步骤5,经过访问周期t后,执行散列表切换;步骤6,进行数据冷热判断。进一步的,步骤1中,根据文件存储系统中的路径名+文件名,或块存储系统中的数据块+偏移量,或对象存储系统中的存储池+对象名来确定文件访问的dataid;根据dataid,唯一确定某一数据;在分布式存储系统运行时,若有数据访问发生,则根据dataid记录本次数据访问。进一步的,步骤2中,当前版本散列表cht的大小为v,其他版本的散列表每一位的大小依次递减;即多版本散列表中每一位的大小依次为v,v-1,v-2…1;总体需要大小的内存空间。进一步的,步骤4中,步骤3产生的k个结果在散列表中对应的k位均增加1;若有某一位的vbits已经全部置为1,则这一位保持不变。进一步的,步骤5中,采用轮询方式选定下一个散列表,新的cht需要将其每一位的大小置为vbits,并将其内容全部置为0;其他散列表则需要进行降级,将其首位全部置为0,以降低其权重。进一步的,步骤6中,首先根据数据的dataid进行k次哈希计算,再根据计算的结果访问散列表对应的k个位置,将这k个位置的访问记录转换为整形,并选出其中的最小值作为数据在该时间段内的访问频度;使用该方法依次得出数据在其他版本的散列表中的访问频度,然后加和,计算出数据的热度h;最后将h与设定的阈值s比较,如果大于s,则认为该数据是热数据,否则视为冷数据。与现有技术相比,本发明有以下技术效果:本发明采用多哈希的思想,通过数据映射来统计访问情况,不需要为每个数据id保存一份记录,减少了存储空间占用以及数据id查找的时间,可以在有限内存空间的情况下,较为高效地判断海量数据的冷热状况。本发明采用多版本的哈希表,设计了哈希表的降级规则,并根据访问的时间点来确定访问次数的权重,充分考虑了数据访问频率和访问时间局部性的影响,能够较为准确地判断海量数据的冷热状况。附图说明图1为本发明的方法结构示意图;图2为哈希表切换示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明的基本构想,并不用于限定本发明。本领域技术人员可由本说明书所表述的内容了解本发明的其它优点与功效。本发明还可以有其它不同的具体实施方式加以实施或应用,本说明书的各项细节也可以有基于不同观点与应用,在没有违背本发明精神下可以进行各种修饰或改变。本发明具体实施方式提供了一种分布式存储系统中海量数据的冷热判断方法,通过选取合适数量的哈希函数,并在每次数据访问时将访问的索引通过这些哈希函数计算出对应的哈希结果,然后增加这些哈希结果在当前版本哈希表中对应位置的值;经过多次访问后,通过切换当前版本的哈希表以及移除所有版本哈希表的首位来进行衰减,以降低老旧信息的影响;最后通过统计所有版本哈希表中的数据访问信息来确定数据的冷热,从而提高数据冷热判断的准确率,进而提高了系统性能。下面将参考附图分步骤详细描述本发明。步骤1:构建一个分布式存储系统,并确定该分布式系统的数据访问方式。目前主流的分布式存储系统主要包括文件存储,块存储和对象存储。根据文件存储系统中的路径名+文件名,或块存储系统中的数据块+偏移量,或对象存储系统中的存储池+对象名来确定文件访问的dataid。根据dataid,可以唯一确定某一数据。在分布式存储系统运行时,若有数据访问发生,则根据dataid记录本次数据访问。步骤2:在内存中建立一个散列表,用以记录该分布式系统的数据访问情况,如附图1所示。一共采用v个散列表,其中负责记录当前数据访问信息的散列表称为currenthashtable(cht),它共有共有m位,每一位大小都为vbits,故其占用的空间大小为m×vbits。其他版本的散列表每一位的大小依次递减。散列表位的大小代表着其权重,由于cht中的信息均为最新的信息,理应占据最高的比重;其他散列表版本越靠前,其储存的信息就越老旧,其每一位的大小就应该越小。故多版本散列表中每一位的大小依次为v,v-1,v-2…1。总体来看,本方法需要在内存中开辟bits大小的空间。步骤3:选取k个合适的哈希函数为dataid进行散列,如附图1所示。若将每个数据的访问路径都记录在内存中,将会产生大量的内存开销,故采用了散列的思想,将dataid映射到哈希表对应的位置上。由于本方法对哈希碰撞带来的错误比较敏感,故选择了数据映射比较均匀的哈希算法,并同时采用了k个哈希函数进行映射,以减少dataid在映射的过程中产生哈希碰撞的概率。步骤4:将步骤3中的哈希结果映射到散列表的对应位置上,如附图1所示。散列表共有m位,故需处理第二步中哈希函数的结果,使其均匀的分布在0到m-1之间。这里与布隆过滤器比较相似,不同之处在于,布隆过滤器的每一位大小都是1bit,而我们采用的散列表的每一位大小都为vbits,用于统计映射到这一位的数据被访问的总次数。由于采用了k个哈希函数,故产生了k个哈希结果,这k个结果在散列表中对应的k位均增加1,以记录该次访问。若有某一位的vbits已经全部置为1,表明其被访问的频率很高,超过了可记录上限,一定会被判断为热数据,故这一位保持不变;步骤5:经过访问周期t后,执行散列表切换,其过程如附图2所示。步骤3、4重复进行t次以后,cht已经基本写满,产生了较严重的哈希碰撞。这时需要切换当前的散列表。由于cht中储存的是0~t内的访问信息,cht之后的散列表依次存储了(v-1)t~vt,(v-2)t~(v-1)t…2t~t内的数据访问信息,故需将cht切换为储存信息最老旧的散列表,即采用轮询方式选定下一个散列表。新的cht需要将其每一位的大小置为vbits,并将其内容全部置为0。其他散列表则需要进行降级,将其首位全部置为0,以降低其权重。步骤6:进行数据冷热判断。首先根据数据的dataid进行k次哈希计算,再根据计算的结果访问散列表对应的k个位置,将这k个位置的访问记录转换为整形,并选出其中的最小值作为数据在该时间段内的访问频度。使用该方法依次得出数据在其他版本的散列表中的访问频度,然后加和,计算出数据的热度h。最后将h与设定的阈值s比较,如果大于s,则认为该数据是热数据,否则视为冷数据。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1