一种应用于RCFile存储模型的预分配的自适应压缩方法与流程

文档序号:12600670阅读:409来源:国知局
一种应用于RCFile存储模型的预分配的自适应压缩方法与流程

本发明是一种应用于RCFile存储模型的预分配的自适应压缩方法。主要用于提高使用RCFile作为其存储格式的存储系统的存储能力,节约系统资源,属于数据压缩与存储技术领域。



背景技术:

随着电子信息技术的飞速发展,特别是云计算、物联网、社交媒体和社交网络的迅速发展,数据量正在以前所未有的速度增长。如此大的数据量,对传统的行存储模式提出了挑战.为了提高系统综合性能,Facebook公司提出的RCFile存储结构,是一种高效的存储结构,该存储结构遵循的是“先水平划分,再垂直划分”的设计理念,集行存储和列存储的优点于一身,在MapReduce环境下的大规模数据分析中扮演着重要角色。

大数据环境下需要处理的数据量往往是是非常庞大的,这造成查询时大量的I/O,由于CPU处理与磁盘访问发展的不平衡,使得I/O成为了查询的瓶颈。因此,减少I/O的次数能显著提高查询的效率,而数据压缩则能在一定程度上减少I/O的次数,因此,数据压缩成为解决大数据问题的一个研究热点。研究如何针对特定的存储模型采取恰当的压缩策略是十分有意义的。数据的可压缩性取决于数据冗余度。在大数据环境下,数据的来源是复杂的。以电商交易平台为例,不同的客户端产生相同的订单数据或者相似的订单数据可能被分配到不同的服务器数据节点进行存储,这导致在同一个服务器数据节点所存储的数据冗余度较低,从而导致数据压缩效率较低。



技术实现要素:

本发明的目的是提供一种应用于RCFile存储模型的预分配的自适应压缩方法,该方法能够增加同一服务器数据节点的数据冗余度,能够为行组的每一行选择高效的压缩算法进行数据压缩,节约系统资源,提高系统存储能力。

为达到上述目的,本发明提出的技术方案是一种应用于RCFile存储模型的预分配的自适应压缩方法,包括以下步骤:

S1:在客户端使用轻量级数据向量预分配算法,将相同或相似的数据向量分配到相应的服务器数据节点,增加同一个服务器数据节点的数据可压缩性;

S2:在服务器数据节点端,使用基于代价的压缩算法,对同一服务器节点数据进行自适应压缩。

进一步,步骤S1中,所述在客户端使用轻量级预分配算法,对客户端数据进行分配的过程具体如下:

S11:根据服务器节点历史数据抽样,建立映射至二维第一象限的标准向量空间;

S12:获取任意一个客户端的数据向量,将该数据向量的特征向量与客户端定义的标准向量求得余弦相似值,根据相似值判断该客户端数据向量隶属于哪一个服务器数据节点,记录该服务器数据节点编号Nodenum,并向服务器控制节点发送该数据以及其请求的服务器数据节点编号;

S13:服务器控制节点接收到S12中数据向量和其请求编号Nodenum时,根据设定存储阀值以及实时状态判定其请求编号为Nodenum服务器节点是否可存储数据,如果可以,那么在服务器数据节点直接存储该客户端数据向量;如果不可以,那么根据预先定义的标准向量空间,将客户端数据存储到满足条件的邻近服务器数据节点,并且记录客户端数据实际存储的服务器数据节点编号Node'num

S14:将S13中服务器数据节点编号Node'num返回给控制节点,更新控制节点中该客户端数据向量存储服务器数据节点编号,再执行S12。

进一步,步骤S2中,所述的使用基于代价的压缩算法CCA(Compress-Costed Algorithm),对同一服务器节点数据进行自适应压缩具体包括:

S21:获取一个满足压缩条件的服务器数据节点,假设每个服务器数据节点包含m个行组,记录每个行组每行的元素个数为j;

S22:以行组第一行为例,从前m-1个行组第一行随机抽取k个元素(j/m=λk,λ=2,4,8,...,2n),从剩下的行组,也就是第m个行组第一行中选取r个元素(j mod m=λr,λ=2,4,8,...,2n);

S23:合并S22中抽取的数据,形成新的纪录,记NewRow;

S24:对NewRow进行压缩代价分析,对NewRow并发执行多种轻量级压缩算法,记录每一种压缩算法的压缩时间与压缩率,根据压缩时间与压缩率确定压缩代价;

S25:为行组每一行选择代价最小的压缩算法压缩服务器数据节点,再执行S21。

本发明的有益效果在于:

1)在客户端建立轻量级预分配算法PPDA将相同或相似的数据分配到相应的服务器数据节点,增加同一个服务器数据节点冗余,为后续高效压缩奠定基础。

2)根据RCFile存储模型特点,针对同一服务器数据节点的行组的不同行进行属性分析,使用基于代价的压缩算法CCA对同一服务器节点数据自适应压缩,由于根据行组各行元素特点有针对性的使用轻量级压缩算法,能够在节约压缩时间的同时有效的提高数据压缩率,从而提高系统存储能力。

附图说明

图1是本发明方法客户端的标准向量空间模型示意图。

图2是本发明确定任意客户端向量分配节点号的模型示意图。

图3是本发明方法服务器数据节点的压缩代价流程示意图。

图4是本发明提出的应用于RCFile存储模型的预分配的自适应压缩方法的流程图。

具体实施方式

现结合附图及实施例,对本发明做进一步详细说明。应当理解,此处所描述的实例仅用于解释本发明,并不用于限制此发明。

本发明针对大数据环境下相同服务器数据来源复杂,同一服务器数据节点数据之间相似度较低而不能获取好的压缩效果问题,提出了一种新的应用于RCFile存储模型的预分配的自适应压缩方法。该方法首先在客户端建立轻量级数据向量分配算法PPDA(Pre-processing Distribution Algorithm),以确定客户端数据向量属于哪一个服务器数据节点,实现相同或者相似数据的聚集在同一个服务器数据存储节点,提高同一服务器节点的数据冗余度,为后续高效压缩奠定基础;在服务器数据节点端,针对RCFile行组特点,建立基于代价的压缩算法CCA(Compress-Costed Algorithm)为行组的不同行选择最优的轻量级压缩算法,能够有效的节约系统资源和提高系统存储能力。

从体系结构的角度分析,本发明是将过若干个相同客户端节点、服务器控制节点和服务器数据节点组成一个数据分配与存储的体系结构。客户端节点负责产生数据向量,再对产生的数据与标准向量做相似度分析,确定待分配至的服务器数据节点编号,上传客户端数据与节点编号。控制节点主要记录服务器数据节点状态与更新客户端存储信息。服务器数据节点主要负责存储来自客户端的数据,同时对满足压缩条件的数据节点使用基于代价的压缩算法CCA进行压缩处理,减少数据压缩时间,节省存储空间。

从方法流程的角度分析,本发明在整个设计方法中,主要分为两部分:首先在客户端定义标准向量空间,建立轻量级预分配算法PPDA用于判定客户端产生的数据向量属于哪一个服务器数据节点,如图4的上半部分所示;继而设计一套基于代价的数据压缩算法CCA用于压缩算法的选择,如图4的下半部分所示。

其中,进一步,上述轻量级预分配算法PPDA对客户端数据进行分配过程具体如下:

步骤11.根据服务器节点历史数据抽样,建立映射至二维第一象限的标准向量空间。

步骤12.获取任意一个客户端的数据向量,将该数据向量的特征向量与客户端定义的标准向量求得余弦相似值,根据相似值判断该客户端数据向量隶属于哪一个服务器数据节点,记录该服务器数据节点编号Nodenum,并向服务器控制节点发送该数据以及其请求的服务器数据节点编号Nodenum

步骤13.服务器控制节点接收到步骤12中数据向量和其请求编号Nodenum时,根据设定存储阀值以及实时状态判定其请求编号为Nodenum服务器节点是否可存储数据。如果可以,那么在服务器数据节点直接存储该客户端数据向量。如果不可以,那么根据预先定义的标准向量空间,将客户端数据存储到满足条件的邻近服务器数据节点,并且记录客户端数据实际存储的服务器数据节点编号Node'num

步骤14.将步骤13中服务器数据节点编号Node'num返回给控制节点,更新控制节点中该客户端数据向量存储服务器数据节点编号,再执行步骤12。

所述的使用基于代价的数据压缩算法CCA对同一服务器节点数据自适应压缩具体如下:

步骤21.获取一个满足压缩条件的服务器数据节点,假设每个服务器数据节点包含m个行组,记录每个行组每行的元素个数为j。

步骤22.以行组第一行为例,从前m-1个行组第一行随机抽取k个元素(j/m=λk,λ=2,4,8,...,2n),从剩下的行组,也就是第m个行组第一行中选取r个元素(j mod m=λr,λ=2,4,8,...,2n)。

步骤23.合并步骤22)中抽取的数据,形成新的纪录,记NewRow.

步骤24.对NewRow进行压缩代价分析,对NewRow并发执行多种轻量级压缩算法,记录每一种压缩算法的压缩时间与压缩率,根据压缩时间与压缩率确定压缩代价。

步骤25.为行组每一行选择代价最小的压缩算法压缩服务器数据节点,再执行步骤21。

现对PPDA算法的流程给予说明,如下:

假设有若干个数据样本(x,y)(x>0,y>0),且均匀分布于第一象限。则所述的轻量级预分配算法PPDA执行流程如下:

步骤31.首先定义一组标准向量集,用于划分n个相似空间,如图1所示,关于标准向量集中的每一个向量做如下约束:

通过公式(1)的约束,我们可以得到以任意标准向量为中心的θ域,如图2所示,为一个相似空间,一共n个相似空间,其中每一个相似空间对应服务器的一个数据节点。

步骤32.获取任意一个客户端的数据向量将该数据向量与客户端定义的标准向量求得余弦相似值其中SV由公式(2)决定。根据公式(3)计算出该客户端数据向量隶属于服务器数据节点号Nodenum,并向服务器控制节点发送该数据以及其请求的服务器数据节点编号Nodenum

步骤33.服务器控制节点接收到步骤32中数据向量和其请求编号Nodenum时,根据设定存储阀值Q(当存储量小于Q时,该服务器节点可存储数据)以及实时状态判定其请求编号为Nodenum服务器节点是否可存储数据。如果可以,那么在服务器数据节点直接存储该客户端数据向量。如果不可以,那么根据预先定义的标准向量空间,将客户端数据存储到满足条件的邻近服务器数据节点,并且记录客户端数据实际存储的服务器数据节点编号Node'num

步骤34.将步骤33中服务器数据节点编号Node'num返回给控制节点,更新控制节点中该客户端数据向量存储服务器数据节点编号,再执行步骤32。

在PPDA部署完成的情况下,对于满足压缩条件的服务器数据节点,我们需要通过基于代价的压缩算法CCA为每个服务器节点中的行组不同行选取最佳的压缩算法,CCA执行流程具体如下:

步骤41.获取一个满足压缩条件的服务器数据节点,如图3所示,假设每个服务器数据节点包含m个行组,每个行组具有i行,每行的元素个数为j。

步骤42.以行组第一行为例,从前m-1个行组第一行随机抽取k个元素(j/m=λk,λ=2,4,8,...,2n),从剩下的行组,也就是第m个行组第一行中选取r个元素(j mod m=λr,λ=2,4,8,...,2n)。

步骤43.重组步骤42中抽取的数据,形成新的纪录,记NewRow(1).

步骤44.对NewRow(1)进行压缩代价分析,对NewRow(1)并发执行多种轻量级压缩算法,记录每一种压缩算法的压缩时间与压缩率,根据压缩时间与压缩率确定压缩代价。

步骤45.为NewRow(1)选择代价最小的压缩算法Alg1,行组的其余行与第一行处理过程一致,再执行步骤41。

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