当前位置:问答库>论文摘要

题目:一种SQL-to-MapReduce优化器的研究与实现

关键词:MapReduce,Hadoop,SQL-to-MapReduce,查询优化

  摘要



随着Web2.0、社交网络以及电子商务的发展,这些应用背后的数据量也日益膨胀,普通服务器组成的计算集群用于处理各种大数据应用。例如在工业领域的网页检索、推荐系统、自然语言处理等;在科研领域的生物复杂分析、气候模拟预测等。MapReduce是一种很好的分布式编程框架,具有并行化、编程灵活、水平扩展、高可靠性等特征,加之拥有强大的开源实现Hadoop,为大数据的批处理提供了一个有效的方案,Hadoop已经成为处理大数据应用的重要工具。使用中,研究者们又在MapReduce的基础上开发出了HiveQL、PigLatin等SQL风格的高层查询语言,方便了使用者编写数据查询和分析程序。

通常,使用高层查询语言编写的语句会由一个SQL-to-MapReduce转换器将生成一个包含MapReduce作业序列的执行计划,最后转换成一系列MapReduce作业,提交Hadoop集群上执行。但研究者发现SQL-to-MapReduce转换器可能会生成许多低效甚至不必要的作业,从而带来集群资源的浪费。每个MapReduce作业需要在作业调度、初始化、数据读写和传输、排序、序列化上耗费大量时间,这些成本远远超过了Map和Reduce作业中对数据操作的执行成本。

本文针对该问题开展研究,设计并实现了一个SQL-to-MapReduce优化器MRPacker。通过对MapReduce查询算子的类型和性质进行研究和分析,给出了MapReduce作业的合并规则,并实现了寻找成本最低执行计划的搜索算法和优化算法;通过一个Hadoop作业分析模块,使用采样的方法获取与作业有关的动态参数,并给出了组合作业之间动态参数的关系,使用MapReduce性能模型估算组合作业的执行成本,从而挑选出具有最低成本的执行计划;通过对MapReduce查询算子生成的代码框架的研究和分析,设计并实现了组合作业MapReduce代码的生成策略和工作流程,最终生成可在Hadoop集群上运行的高效MapReduce作业。最后本文通过实验对SQL-to-MapReduce优化器的性能指标进行了评测,实验结果表明优化器在某些场景下,生成的MapReduce作业的执行成本和其他转换器如Hive和YSmart相比得到了较大幅度的降低。