MapReduce中迭代查询的最优化

 

摘要:

OptIQ:在分布式环境中迭代查询的一种查询优化的方法。(全自动化的)

 

view materialization and incremental view evaluation.

           物化视图和增量视图评估

 

           作用:减少了不同迭代过程中的重复计算

 

1. INTRODUCTION

            几种新的技术:

查询优化都不是自动化和框架化的,需要程序员指出那些数据需要重用以及手动的指定那些数据如何存储。

:为辨别迭代查询中出现的重复计算提出了一个总体框架,应用了在传统数据库领域中的物化视图和增量试图评估和编译器领域中的程序分析和转换的技术。

1、把迭代查询分为变和不变的视图,并且不变的视图将会用到下次的迭代过程中去。

2、通过跳过评估那些收敛的元组来增量化变化的视图。

 

2、为迭代查询定义SQL语句

包括三部分

hive递归查询recursive hive 迭代查询_hadoop

 

保存当前的迭代中的数据  存在本地磁盘中 let语句

保存上一次迭代的数据 存在分布式文件系统。set语句

 

 

update table)的所有的元组都要进行比较。

hive递归查询recursive hive 迭代查询_迭代_02

和S是输入表,schema(R)表示R表的属性,T(list)表示T表中有一个list属性,表示一个命题公式。

      投影操作(projection)投影输入表中特殊的属性集

        选择操作(selection)选择满足输入表中满足的元组

       连接操作(join)提取两个输入表的叉积满足^2的元组

Group-by操作重组元组和计算聚集函数

PageRank:

三个表,定义的查询语句如下

hive递归查询recursive hive 迭代查询_mapreduce_03

Src当前节点  Dest 目的节点   Score相当于PR值  count表示节点的出度

hive递归查询recursive hive 迭代查询_hadoop_04

K-means:

两个表

hive递归查询recursive hive 迭代查询_hadoop_05

Point数据点,Centro聚集的中心点

定义的语句

hive递归查询recursive hive 迭代查询_hive递归查询recursive_06

3、查询优化:

(物化视图和增量视图评估)

        物化视图重用了未修改属性子查询的结果

        增量视图评估重用了未修改元组的结果

 

-------表分解

          把表分解成变和不变的视图,重复使用不变的视图。

 

--------增量表(delta table)

         根据收敛条件减少元组数目。

hive递归查询recursive hive 迭代查询_自动化_07

概述图

          如何物化视图

1、把update table 分解成变和不变的视图,重写迭代查询语句,把update table 用变化的视图表示(变和不变的视图有一个相同的视图,最后可以用来进行join操作)

2、物化查询过程中不变的视图,重写和简化迭代过程重要使用的不变视图

如PageRank

Graph(src,dest,score)分解成 VI(src,score)和IT(src,dest)

hive递归查询recursive hive 迭代查询_hadoop_08

IT_count

          IT_Count = select IT.src,IT.dest,Count.count

           from IT, Count

          where IT.src = Count.src.


表和score表可以相互替换

(循环不变量)

物化视图最后优化的语句

hive递归查询recursive hive 迭代查询_hadoop_09

     Automatic incrementalization

Update operations

操作执行的频率大于Insert和delete操作

Detecting delta tables

Deriving incremental queries

        刚开始比较常规的语句

       T是update table,q(T)相当于查询语句,φ(ΔT )是收敛条件

⊕ ΔT )

q(T ⊕ ΔT) = q(T) ⊗ q(ΔT ).

         Dscore是score表的一个增量表

            研究聚集函数中的增量计算,能够很大程度的提高性能

                 Sum函数

           Count函数和sum函数有相同的分布规律,average函数可以分解为count函数和sum函数

     Max和min函数

 

加了incrementalization之后的语句:

实验

Hadoop和spark上使用OptIQ

PageRank

 

反应时间和迭代次数减少

 

K-means

 

View并没有增加效率,优化过程中磁盘读写增加了。

 

物化视图: 物化视图(Meterialized View)提供了强大的功能,可以用于预先计算,并且保存表连接或者表聚集等耗时比较多的操作的结果,这样子,在执行查询的时候,就可以避免这些耗时的操作,从而快速的得到结果。

 

空间换时间

 

如何能够保证IO开销,即消耗空间换取的时间能不能抵消掉读磁盘产生的IO开销。