[发明专利]基于MapReduce扩展框架的分布式SQL查询方法有效
申请号: | 201210209080.2 | 申请日: | 2012-06-19 |
公开(公告)号: | CN102799622A | 公开(公告)日: | 2012-11-28 |
发明(设计)人: | 王衎;高军;王腾蛟;杨冬青;唐世渭 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 余长江 |
地址: | 100871*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 mapreduce 扩展 框架 分布式 sql 查询 方法 | ||
技术领域
本发明涉及一种在分布式计算的环境下进行SQL查询的方法,特别涉及一种利用MapReduce和内存处理结合的方式处理SQL查询的框架,属于信息技术领域。
背景技术
随着互联网技术和相关行业的发展,计算机行业面临着指数增长的海量数据和更多的数据处理需求。面对这种状况,一些新技术快速发展,包括并行数据库、分布式处理等。
MapReduce是一个处理海量数据的计算框架,非常适合分布式的计算系统。Hadoop是一个由Apache基金会开发的基于MapReduce框架的分布式数据处理系统,有计算能力强、容错性和数据可用性强、可扩展性强等特性。然而,这种传统的MapReduce框架和Hadoop系统也有以下缺点:
1、擅长处理批量处理的问题和非结构化的数据,不擅长处理结构化数据的处理。
2、由于其高可扩展性,对于特定问题的处理需要用户进一步编程解决。不存在针对某种问题的特定接口。
3、由于其分布式的特点,存在着启动时间长、负载不均衡、数据吞吐量大等相关问题,进一步导致处理延时较高,不能支持一些实时的查询。
针对以上问题,已经有了多种对MapReduce框架的优化和补充,使得MapReduce适用于迭代的计算模型、结构化的数据处理、SQL查询等特定应用。其中,由于SQL查询是数据库领域的重要应用,且其处理能力强大,有大量的研究和分布式环境下的SQL查询相关。Hive和Google Dremel是两个比较成功的系统。
Hive是一个建立在Hadoop上的数据仓库系统,具有数据管理、数据查询等功能。Hive定义了一个类似于SQL的查询语言——HiveQL,支持SQL可以实现的绝大多数查询,并且查询接口简单。Hive利用Hadoop的Hadoop文件系统(HadoopFile System,HDFS)存储数据,利用Hadoop的MapReduce模块进行数据处理的工作,并且有很强的数据容错性和数据恢复能力。总体来看,Hive基本支持绝大多数分布式数据库的功能,并且有更好的扩展性和规模性。然而,由于Hive的数据处理的功能仍然建立在Hadoop上,它仍然存在一些Hadoop系统的缺点,比如处理延时较高的问题。下面通过简单分析Hive和Hadoop系统来说明这个问题。
Hive的体系结构如图1。在Hive部分中,CLI、Web GUI和JDBC/ODBC模块都是向用户提供的结构,用户通过接口提供查询。Thrift Server是提供跨语言开发的服务器模块,用来支持JDBC/ODBC。MetaStore模块是用来保存数据的元数据的服务器模块,Hive是用MySQL实现的,通过MetaStore可以高效地支持对数据的管理和查询。Driver部分是Hive的核心,它包含编译、优化、执行查询三个模块,功能是将用户发出的查询语句进行转化和优化,生成MapReduce程序并将其发送给Hadoop执行。在Hive中,查询的执行交给Hadoop来完成。Driver生成的MapReduce任务将被提交给Hadoop的JobTracker,JobTracker负责建立任务、跟踪任务运行状态并将任务结果返还给Hive的Driver。Hive提交的MapReduce任务的执行和普通的Hadoop的MapReduce任务的执行基本相同。
从上面对Hive框架的分析可以看出,Hive处理了上面提到的两个问题。一方面在Hadoop的基础上提供了一些针对SQL的特定接口,使得用户可以方便地使用MapReduce框架进行SQL查询;另一方面也针对MapReduce和SQL进行了优化,通过使用MetaStore和查询优化的模块对查询任务进行优化,使得MapReduce模型可以对结构化的数据进行处理。然而,由于Hive的查询任务仍然是交给Hadoop系统完成,因而没有解决Hadoop系统延迟较高的缺陷。
图2是Hadoop系统的MapReduce框架。MapReduce任务执行的一般流程是:
1、Mapper任务从HDFS上读取数据块(split)。
2、每个Mapper任务调用map函数,对每一个数据块进行处理,处理的结果写入缓存或者磁盘。
3、Mapper执行完之后,数据在本地进行排序和合并(有可能经过本地的combine)。
4、经过Shuffle阶段,每个节点把本地数据发送给对应的Reducer所在的节点。
5、在Reducer本地进行排序和合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210209080.2/2.html,转载请声明来源钻瓜专利网。