论文部分内容阅读
随着社会的发展,数据量不断增大。但是如此大的数据并不都是有用的。因此从海量的数据中获取有用的信息是非常关键的。从而导致了海量数据的分析处理受到越来越多的关注。Map-Reduce框架是Google在2004年提出的分布式计算框架。Apache开发了Map-Reduce的开源实现Hadoop。连接操作是数据库中的基本操作,应用非常广泛。在海量数据分析中对于单连接操作和多连接操作的应用更是非常普遍的。并且随着数据量的增大,海量数据分析处理越来越重要,在Map-Reduce下的多表连接操作查询优化的研究是十分有意义的。两两连接法在进行多表连接中会产生大量的中间结果,这样会产生成很大的I/O开销,并且对分布式文件系统HDFS进行多次的写入和写出。Replicated Join法由于它在一个Map-Reduce上完成了这个多表连接操作,减少了磁盘I/O开销,并且避免了对分布式文件系统HDFS进行多次的写入和写出。但是由于Replicated Join法需要把一条元组发送到多个Reduce端,当多表连接操作的关系表的数量很多时,会导致大量的数据复制这样会造成很大的网络传输开销。因此本文提出了一个包含两两连接法和Replicated Join法的最优执行计划。该方法可以包含两两连接法和Replicated Join法的优点。在多表连接操作中,采用蚁群算法生成两两连接法的最优执行序列。采用蚁群算法可以尽量避免在寻找最优执行计划时陷入局部最优解。采用连接关系作为蚁群算法节点可以生成适合Map-Reduce下多表连接操作执行计划的稠密树。在得到两两连接法的最优执行计划后构建二叉树,然后在二叉树上确定Replicated Join法的覆盖范围,得到包括两两连接法和Replicated Join法的多表连接操作的最优执行计划。最后在Hadoop集群上进行实验,得出本文提出的两两连接法和Replicated Join法相结合的方法是十分有效的。