一种云计算环境下的混合近似查询方法与流程

文档序号:12465523阅读:225来源:国知局
一种云计算环境下的混合近似查询方法与流程

本发明涉及云计算,近似查询处理领域,具体地说是一种云计算环境下实现高效查询处理的混合近似查询方法。



背景技术:

大数据(Big Data)通常被认为是具有PB级以上数据容量,包括结构化、半结构化和非结构化数据组织形式,且增长速率快,处理时间敏感的数据。随着电子商务、社交网络等新一代大规模互联网应用以及科学计算的蓬勃发展,大数据也广泛存在于工业界与学术界,如互联网数据、企业业务数据、统计数据、医疗数据、科学数据等。面对大数据的指数级增长现状,如何对其进行有效地处理与分析,从中发现有用的信息和潜在的规律,支持上层查询需求并指导企业决策已成为当前研究的热点和难点。

为了解决上述问题,研究人员将在线聚集技术引入云计算领域,将两者有机融合并提出云计算环境下的在线聚集查询方法,通过寻找查询精度和查询性能的折中以实现性能的大幅提升。在线聚集首先由Hellerstein等人提出,该方法通过对原始数据集进行随机采样保证样本数据的随机性,在此基础上,通过概率统计方法对查询结果做出近似估计,并利用置信区间保证近似结果的精度确保其有效性。Bose和Condie等人基于pipeline思想展示了如何利用MapReduce模型实现在线聚集的部分基本思想(执行结果的提前展示和交互式查询处理),为在线聚集在云计算环境下的部署做出积极尝试,但是这两个系统都缺乏近似估计模块,无法实现对查询结果的近似估计。为此,Pansare等人提出了基于MapReduce模型的完整的在线聚集系统,实现了对查询结果的近似估计,但是由于无法保证样本的有效采集导致需要访问较大的数据量才能获得较为精确的结果(处理30%左右的数据量才能满足精度需求)。此外,针对云计算环境下的在线聚集机制无法很好支持连接操作的问题,Shi等人提出了基于Hadoop平台的新型在线聚集系统COLA,实现了基于数据块粒度的随机采样,同时设计了面向连接操作的在线聚集MapReduce程序,一定程度上丰富了云计算环境下在线聚集的适用范围。然而,上述所有在线聚集系统均采用基于中心极限定理的近似估计方法,只能对聚集查询和部分统计操作作出近似估计。为此,Laptev等人基于Hadoop平台提出了EARL系统,该系统采用基于bootstrap的自举重采样方法实现对任意查询函数的近似估计(点估计方法),尽管增加了在线聚集的灵活性和适用性,但是不支持对近似结果的良好区间估计。

然而上述研究工作均未考虑在线聚集方法存在的估计失效问题,在线聚集通常基于中心极限定理实现对查询结果的近似估计,当样本数据量大于临界值时,采样过程服从独立同分布的前提假设将不再成立,从而引起估计方法的失效,致使在线聚集需要完全扫描剩余数据以获取精确结果,大幅延长整体执行时间。



技术实现要素:

为了克服上述现有技术的不足,本发明提供一种云计算环境下的混合近似查询方法,引入bootstrap估计理论并将传统在线聚集机制在估计时间上的优势与bootstrap方法在稳定性上的优势进行有效融合,通过建立合理的估计失效概率模型预测传统在线聚集机制的失效概率,据此实现两种估计方法的动态实时切换,及时将可能失效的传统在线聚集查询作业切换到更加稳定的bootstrap模式,从而避免由估计失效引起的全局数据扫描,优化整体执行性能。

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

一种云计算环境下的混合近似查询方法,其执行过程依赖于以下四个核心模块:SQL查询接口、CLT-based在线聚集执行模式、bootstrap-based近似查询模式以及近似查询模式的动态切换机制。

通过上述四个核心模块的协调工作可以实现云计算环境下的混合近似查询,其执行步骤如下:

1)由SQL查询接口实现对查询语句Q的信息抽取,基于Q的查询谓词及其涉及到的输入数据形成针对查询Q的标准化MapReduce输入参数。

2)若查询Q为单表查询,则启动一个MapReduce程序并配置Q的标准化输入参数,并以CLT-based在线聚集执行模式进行查询处理,若查询Q为多表查询,则启动两个MapReduce程序并配置Q的标准化输入参数,并以CLT-based在线聚集执行模式进行查询处理。

3)在上述MapReduce程序执行过程中实时计算CLT-based在线聚集执行模式的估计失效概率,并据此动态触发近似查询模式的切换机制,实现从CLT-based在线聚集执行模式向bootstrap-based近似查询模式的动态转换,避免由估计失效引起的性能下降。

4)将上述MapReduce程序处理得到的结果传输至SQL查询接口向用户进行展示。

所述步骤3)中,给定任意一组通过无放回采样方法获取的随机样本其中样本的下标Li表示S中第i个样本在数据集R中的位置。由于采用无放回方式,因此上述样本集S满足以下特性:针对所有样本,若i≠j则有Li≠Lj,即S中所有样本均是唯一的(仅在样本集中出现一次)。而采用有放回方式获取随机样本很难保证样本数据的唯一性,任一样本均有可能重复出现在样本集S中。因此,若要使得无放回采样获取的随机样本集S可被视为等同于有放回采样获取的随机样本,则必须保证有放回采样获取上述样本集S的概率相对较大。否则,样本集S不能被看作是有放回采样的一种常态结果,而作为无放回采样常态结果的样本集S更不可能被看作等同于有放回采样的一种非常态结果(即两种采样结果之间不存在近似关系)。基于上述分析可知,若要满足样本无偏性的等概率采集特性,必须提高样本集S作为有放回采样结果的概率。而通过有放回采样方法采集n个(具有唯一性)样本的概率可以按如下公式计算,其中m表示数据集R的数据总量。

式中m表示数据集R的数据总量,n为样本中包含的元组数量。

给定上述有放回采样获取n个唯一样本的概率Pwith,则其与在线聚集估计失效概率Pf之间的内在联系可简单概括为以下两点:1)随着Pwith的不断降低Pf不断增大,这主要是因为较小的Pwith意味着有放回采样获取n个唯一样本的可能性较低,即无法以较高的概率将无放回采样结果近似的看作等同于有放回采样结果,从而导致估计失效概率升高;2)当Pwith无限趋近于0时,Pf也无限趋近于100%,这主要体现了极限情况下两个概率之间的必然联系,即有放回采样无法获取n个唯一样本意味着无放回采样结果无法等同于有放回采样结果,从而无法保证样本无偏性致使估计失效概率为100%。综上所述,Pwith和Pf之间存在着某种内在联系。

为了更好的获取Pwith和Pf之间的映射关系f,以刻画两者之间的内在联系,本发明根据CLT-based在线聚集执行模式所具有的平缓性、收敛性以及差异性等特征,并结合概率Pwith计算相应的近似估计失效概率Pf,计算公式如下:

式中参数μ、s以及λ分别为平缓度参数、收敛性参数以及倾斜度参数。

平缓度参数μ的作用是控制失效概率Pf在Pwith具有较大取值时具有较低且平缓的增长趋势。平缓度控制参数取值越大则表示Pf在初始阶段增长越平缓,意味着在在线聚集执行初期估计失效发生的概率相对较小。

收敛性参数λ的作用是保证失效概率Pf在Pwith→0时无限趋近于100%,意味着样本集无法保证无偏性时具有极高的估计失效概率。

倾斜度参数s的作用是将数据分布的倾斜特性引入衰减函数,使得对估计失效概率的计算更为精准。倾斜度参数s的取值范围是(0,1],s=1表示均匀数据分布,而s取值越小则表示数据分布的倾斜程度越高。

按照概率Pf实现近似查询方法的动态切换,即CLT-based在线聚集执行模式在其执行过程中以Pf的概率触发bootstrap-based近似查询模式,Pf越大表示越需要切换查询模式且切换成功的可能性越大。

所述步骤3)中提出的在线聚集估计失效概率模型共包含三个重要参数,为了保证该估计失效概率模型具有较好的性能就需要对上述三个重要参数进行有效配置。具体配置过程如下:

首先,针对收敛性参数λ,必须保证失效概率Pf在Pwith→0时无限趋近于100%。为了设置合适的收敛性参数λ,首先将倾斜度参数s设为1并设置一个足够大的平缓度参数以尽可能的扩大平缓度对收敛性的影响(实际测试中发现μ=10即可满足应用需求)。其次,设定λ的测试间隔为0.01(即每次测试后需要对λ取值累加0.01形成新的λ),并针对每一个λ为其计算给定Pwith(实际测试中发现Pwith=0.01即可满足应用需求)的估计失效概率Pf直至Pf≥ε,其中ε为一个逼近100%的取值(设定ε为98%即可满足实际需求)。通过上述方法确定的参数λ可以保证其针对较大的μ具有良好的收敛性,同时这种收敛性也可以很好的保证所有较小的μ同样具有良好收敛性即因此可以认为通过上述方法获取的参数λ具有较好的稳定性。

而针对平缓度参数μ,需要找到合适的取值使得估计失效概率的变化趋势尽可能符合在线聚集的实际执行规律,即保证动态切换机制的触发既不过于保守也不过于激进。给定两个平缓度参数μi和μj以及估计失效概率Pf,可以通过逆函数f-1(Pf,μ,λ)计算相应的失效概率Pwith(i)和Pwith(j)。若有μij则有Pwith(i)<Pwith(j),表明针对参数μi的动态切换较之参数μj更为保守。保守的动态切换会导致一定程度的失效查询漏判,造成过多不必要的在线聚集执行开销,而激进的动态切换会导致失效查询的误判,造成一部分在线聚集查询被过早的切换到bootstrap模式,从而增加了更多的近似估计开销。在实际执行过程中,由于bootstrap近似查询模式具有更高的执行开销,从而导致误判引起的性能衰减较之漏判相对更高。基于此,首先给定倾斜度参数s=1并设定优化的收敛性参数λ(设置为上文方法确定的最优取值),其次选取较大的μ并按照降序对每一个取值进行实际测试,即在均匀分布的数据集中进行实际的在线聚集运行测试,当相邻两个平缓度参数的取值μi和μj所对应的整体执行时间满足时即可认定μ=μi为较好的平缓度选择,这主要是因为随着平缓度参数μ的不断减小转换机制愈加激进,由克服漏判带来的性能提升逐渐被误判所带来的性能衰减所抵消,从而使得执行性能的提升幅度逐渐降低直至出现完全衰减,因此可将出现性能拐点时的平缓度参数作为较优取值。

最后针对倾斜度参数s,需要根据实际情况作出适当调整以满足不同需求,本发明设置其中z为Zipf分布中控制数据倾斜度的参数。

所述步骤3)中提出的混合近似查询动态切换机制,其性能具有一个重要评测指标即误判率,表示误将一个CLT-based在线聚集执行模式的查询切换为bootstrap模式的概率,如何降低误判率是保证动态切换机制有效性的关键。为此,本发明提出渐进近似估计方法以解决上述问题。

一个直观的解决思路是设置较小的采样粒度△S(每一轮采集△S个样本),增加在线聚集的近似估计次数,从而保证执行初期一旦采集到高质量样本集也能以较高的概率被检测到,即通过增加无偏性的判定次数捕捉满足无偏性的样本集合。通过设定较小的△S可以在一定程度上减少在线聚集获取有效估计结果所需的样本量,提高了在线聚集的执行性能。

然而较小的△S也会导致更多的近似估计次数,增加了额外的近似估计开销,一定程度上抵消了由较小采样粒度带来的性能提升。针对这个问题,本发明提出了一种渐进近似估计方法,通过修改每一轮近似估计的样本需求量在一定程度上增加近似估计次数,以期在尽早完成在线聚集查询的同时降低其额外的近似估计开销。

渐进近似估计的核心思想可概括如下:1)首先,选取一个特定大小的样本量n作为近似估计周期;2)其次,将近似估计周期n划分成l个不等大小的子区间且每个子区间内包含ni个样本量(划分方式上式所示),表示在线聚集的第i轮近似估计需要采集ni个样本即△Si=ni;3)随后,在第i轮近似估计中对采集到的△Si个样本进行统计量计算得到结果E(△Si),并基于E(△Si)计算相应的近似估计结果。若不符合用户精度需求,则扩大样本量为△Si+1并计算统计量E(△Si+1),将其与前一轮统计量结果E(△Si)进行整合一同进行本轮近似估计,直至近似结果满足用户精度需求为止;4)最后,当获取的总样本量达到近似估计周期n时,则重启一个新的近似估计周期并重复上述1)~3)步操作。

本发明的有益效果:

1)本发明首次提出基于MapRedcue框架的云计算环境混合近似查询方法,将两种基本近似查询方法进行有机融合,解决了在线聚集估计失效的问题,为近似查询领域的研究提供了新的研究思路。

2)本发明提出在线聚集估计失效概率模型,可适应不同数据分布特征,提供有效的在线聚集估计失效预测功能,并据此提出动态切换机制,有效避免了由估计失效引起的性能衰退,弥补了在线聚集方法的先天缺陷并大幅提升了近似查询执行性能。

3)本发明在云计算环境下通过MapReduce程序执行查询作业,并可实时地向用户提供具有精度标识的查询结果反馈,用户可实现对查询作业的实时监控并根据近似查询结果自行决定是否提早终止查询过程,从而为节省云计算资源开销提供可能。基于上述优点,本发明可广泛应用于云计算环境中。

附图说明

图1为混合近似查询方法的系统架构图。

图2为单表查询的MapReduce流程图。

图3为多表查询的MapReduce流程图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,先对照附图详细说明本发明的具体实施方式,下述具体实施方式以及附图,应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

本发明系统架构,如图1所示,包含四个主要功能模块:SQL查询接口、CLT-based在线聚集执行模式、bootstrap-based近似查询模式以及近似查询模式的动态切换机制。

SQL查询接口负责接收用户提交的查询作业,并对查询作业进行解析,基于查询作业的查询谓词、输入数据以及查询类型等信息实现对查询作业的查询信息抽取,形成针对该查询作业的标准化MapReduce输入参数;给定一组从HDFS获取的随机样本S,CLT-based在线聚集执行模式的功能是将基于中心极限定理实现对查询结果的近似估计。若近似结果不满足用户精度需求则扩大样本量形成新的样本集S′=S+△S,并对其重复上述近似估计过程完成结果的精度更新;bootstrap模式的功能是对采集到的随机样本集合S进行有放回的重采样形成B组大小相同(均为|S|)的新样本。并对这B组新样本分别进行近似估计得到对查询结果的B组估计值,通过对这B组估计值的近似估计得到最终的近似查询结果。若近似结果不满足用户精度需求则扩大样本量形成新的样本集S′=S+△S,并对其重复上述近似估计过程完成结果的精度更新;第三,混合近似查询方法的动态切换机制则负责实时计算CLT-based在线聚集执行模式出现估计失效的概率,当失效概率达到一定阈值时触发动态切换机制将失效查询切换到bootstrap模式下进行进一步处理,避免不必要的全局数据扫描。

首先针对单表查询介绍如何基于MapReduce框架实现支持动态切换机制的在线聚集基本功能。给定一个单表查询,Map函数负责计算估计失效概率Pf并根据Pf进行查询模式的动态切换,并根据不同查询模式的实际需求实现样本统计量计算,将每一轮统计量计算结果作为Reduce函数的输入数据。单表查询的Map函数如算法1所示。

首先,Map函数通过重写MapReduceBase基类中的configure函数加载全局变量sInfo和eInfo以支持后续统计量计算(第4~5行)。随后,针对每一个到达的数据key/value对<ki,vi>,将其加入样本集ΔS(第7行),当样本数量达到sInfo中指定的单轮采集阈值时触发动态切换机制进行估计失效概率的计算(第8~9行)。若无需切换查询机制则继续采用在线聚集查询模式进行统计量计算,并以当前查询ID为key值以查询模式、统计量结果和当前Map任务ID为组合键值形成key/value对作为后续Reduce函数的输入数据(第10~13行)。若需要切换查询机制则使用bootstrap近似查询模式进行统计量计算,首先对样本集ΔS进行有放回重复采样获取多组新样本加入到样本集合RSΔS中,进而针对RSΔS中的多组新样本分别进行统计量计算并将结果存入统计量集合statsSet中,最终以当前查询ID为key值以查询模式、统计量集合和当前Map任务ID为组合键值形成key/value对作为后续Reduce函数的输入数据(第15~19行)。

单表查询的Reduce函数负责接收来自同一查询Q的所有Map输出数据,并对不同Map任务的统计量进行汇总处理形成最终的全局统计量,并根据eInfo中的估计参数对全局统计量进行近似估计,并进行精度判断。单表查询的Reduce函数如算法2所示。

首先,获取全局变量eInfo(第2行)。随后,针对每一组键值序列values进行局部统计量的分类存储,将不同Map任务的输出结果写入采集容器container中,container为每个Map任务开辟独立的存储空间记录各个任务的每一轮局部统计量(第4~5行)。当containerr中各个Map任务的存储空间均不为空(即采集到来自于所有Map任务的输出结果)且为在线聚集查询模式时,触发局部统计量的汇总处理形成全局统计量,并根据全局统计量计算近似查询结果(第6~8行)。最后,根据近似估计结果、全局统计量以及eInfo中的置信度及误差率等估计参数进行近似结果的精度计算,若满足查询精度需求则以ki即Q.qID为key值而以近似估计结果和精度状态作为组合键值形成key/value对返回用户,否则仅以近似估计结果作为键值形成key/value对(第9~13行)。当containerr中各个Map任务的存储空间均不为空(即采集到来自于所有Map任务的输出结果)且为bootstrap近似查询模式时,触发局部统计量集合的汇总处理形成全局统计量集合,并根据全局统计量集合计算近似查询结果(第16~18行)。最后,根据近似估计结果、全局统计量集合以及eInfo中的置信度及误差率等估计参数进行近似结果的精度计算,若满足查询精度需求则以ki即Q.qID为key值而以近似估计结果和精度状态作为组合键值形成key/value对返回用户,否则仅以近似估计结果作为键值形成key/value对(第19~23行)。

其次针对多表查询介绍如何基于MapReduce框架实现支持动态切换机制的在线聚集基本功能。给定一个多表查询涉及两个数据集R和S,本文利用两个MapReduce作业实现近似查询结果的计算。第一个作业基于repartition join方法对两个数据集进行数据过滤与重划分,其Map函数与算法1类似,但存在两点不同:一是多表查询的Map函数仅仅负责从数据集R和S中获取样本数据而不需要对样本集进行统计量计算,这主要是由于连接操作的统计量计算涉及到两组数据的连接结果;二是Map函数输出结果的key/value对需要重构以满足repartition join要求,在键值中增加变量rTag用于表示样本来自哪一个数据集。而第一个作业的Reduce函数接收来自各个Map任务的样本数据并采用ripple join方式实现对来自R和S的样本集进行连接运算,并根据查询模式的类型对运算结果进行相应的统计量计算与近似估计。针对第二个作业,其Map函数仅根据查询ID将近似查询结果分发到相应的Reduce任务,并通过Reduce函数实现对近似结果的精度判断。

多表查询第一个作业的Reduce函数如算法3所示。首先,需要获取变量sInfo和eInfo(第1~2行)。随后,对每一组键值序列values进行样本数据的分类(第5行),并通过ripple join方法计算连接数据集,同时计算该数据集的相关统计量(第6行)。若查询模式为在线聚集,则触发局部统计量的汇总处理形成全局统计量,并根据全局统计量计算近似查询结果(第7~10行)。若查询模式为bootstrap近似查询,则对样本集joinSet进行有放回重复采样获取多组新样本加入到样本集合RSΔS中,进而针对RSΔS中的多组新样本分别进行统计量计算并将结果存入统计量集合statsSet中(第13~15行)。

多表查询第二个作业的Reduce函数如算法4所示。首先,获取全局变量eInfo(第1行)。随后,针对每一组键值序列values进行局部计算结果(Map任务的输出结果包括近似估计结果和相应统计量)的分类存储,将不同Map任务的输出结果写入采集容器container中,container为每个Map任务开辟独立的存储空间记录各个任务的每一轮输出结果(第4行)。当containerr中各个Map任务的存储空间均不为空(即采集到来自于所有Map任务的输出结果)且为在线聚集查询模式时,触发近似估计结果的汇总处理形成最终的近似估计结果(第5~6行)。最后,根据近似估计结果、全局统计量以及eInfo中的置信度及误差率等估计参数进行近似结果的精度计算,并返回相应结果(第7~11行)。当containerr中各个Map任务的存储空间均不为空(即采集到来自于所有Map任务的输出结果)且为bootstrap近似查询模式时,触发局部统计量集合的汇总处理形成全局统计量集合,并根据全局统计量集合计算近似查询结果(第14~16行)。最后,根据近似估计结果、全局统计量集合以及eInfo中的置信度及误差率等估计参数进行近似结果的精度计算,并返回相应结果(第17~21行)。

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