基于列存储的智能双引擎分析系统及方法
【专利摘要】本发明公开了一种基于列存储的智能双引擎分析系统及方法,涉及智慧城市和大数据处理领域,该系统包括HBase存储单元、客户端和智能SQL路由单元,该系统在用户侧实现智能SQL路由单元;该系统采用HBase存储单元作为底层数据的存储单元,并在HBase存储单元上建立实时查询引擎和批量分析引擎,该系统针对的数据是结构化的关系型数据。本发明既能满足实时性的简单查询,又能有效提高分析大规模数据的性能,满足用户对大规模数据的统计分析要求。
【专利说明】基于列存储的智能双引擎分析系统及方法
【技术领域】
[0001]本发明涉及智慧城市和大数据处理领域,具体是涉及一种基于列存储的智能双引擎分析系统及方法。
【背景技术】
[0002]随着移动互联网、智能终端、物联网、云计算以及智慧城市的普及,人们逐渐的进入了 “大数据”时代。大数据是规模非常巨大和复杂的数据集,数据量达到PB、EB或ZB的级别后,传统数据库的管理工具处理起来面临很多问题,例如获取、存储、检索和分析等。在传统的关系数据库中,一般采用索引和全表扫描的方式来处理查询、分析,索引具有快速定位,对于简单查询高效快速的特点,但是对于一些复杂的统计分析,或者数据挖掘类的应用则一般采取全表扫描的方式。大数据引发了一些问题,如对数据库高并发读写要求、对海量数据的高效率存储和访问需求、对数据库高可扩展性和高可用性的需求,在大数据的环境下,数据量是以前传统关系数据库的成千上百倍,传统的关系数据库的一些技术显得力不从心。
[0003]Hadoop是由Apache Software Foundat1n (阿帕奇软件基金会)维护的一个能够对大量数据进行分布式处理的软件框架,Hadoop带来了廉价的处理大数据的能力。Hadoop是一个庞大的生态系统,为处理大数据提供了各种工具和平台。
[0004]HDFS(Hadoop Distributed File System, Hadoop 分布式文件系统)被设计成适合运行在通用服务器上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS是hadoop生态系统的基础。HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的服务器上搭建起大规模结构化存储集群。HBase可提供类似结构化的存储,在基于主键和范围的查询下,性能优越。
[0005]Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL (Structured Query Language,结构化查询语言)查询功能,它可以将SQL语句转换为MapReduce (映射化简)并行任务进行运行。其优点是学习成本低,并可以通过类SQL语句快速实现简单的MapReduce并行统计,不必开发专门的MapReduce并行应用,十分适合数据仓库的统计分析。
[0006]当前,针对大数据的应用,Hadoop现在成为大数据处理的标准工具,而在Hadoop中,都采用Mapreduce来进行数据的批量分析,它将SQL的分解为并行任务在HDFS上进行执行。当数据量大时,对于一些大规模的统计分析任务,MapReduce比传统的关系数据库有更好的扩展性和分析性能。
[0007]但是,MapReduce不能区分业务场景,无论是多么简单的查询,MapReduce都会将其转化为扫描全表的并行处理任务,因此在某些定位查找、检索等场景下,MapReduce就显得过于笨重,耗时而且耗费资源。由于文件没有进行结构化的组织,而MapReduce本身非常耗时,因此,在Hadoop环境下,传统的Hive在性能上仍无法满足用户对大规模数据的查询和统计分析需求。
【发明内容】
[0008]本发明的目的是为了克服上述【背景技术】的不足,提供一种基于列存储的智能双引擎分析系统及方法,既能满足实时性的简单查询,又能有效提高分析大规模数据的性能,满足用户对大规模数据的统计分析要求。
[0009]本发明提供一种基于列存储的智能双引擎分析系统,包括HBase存储单元、客户端、智能结构化查询语言SQL路由单元,该系统在用户侧实现智能SQL路由单元;该系统采用HBase存储单元作为底层数据的存储单元,并在HBase存储单元上建立实时查询引擎和批量分析引擎,该系统针对的数据是结构化的关系型数据;
[0010]所述HBase存储单元用于:实现对数据的底层存储,在存储数据时,将数据的主键自动映射到HBase的主键上,如果用户的数据还有其他列带有索引,那么通过单独的HBase表来生成二级索引表,二级索引表的主键对应用户表的索引列;
[0011]所述客户端用于:接收用户输入的SQL语句,然后将用户输入的SQL语句发送给智能SQL路由单元;
[0012]所述智能SQL路由单元用于:对用户输入的SQL语句进行解析,并进行分析和判断,根据分析的结果将SQL路由到实时查询引擎或者批量分析引擎,进行分析和查询;
[0013]所述实时查询引擎用于:将使用索引的简单查询转化为HBase的主键查询操作或范围查询操作,通过HBase的主键和索引对数据进行检索、查询和分析;
[0014]所述批量分析引擎是Hive在HBase存储单元上的实现,对于复杂的统计和分析,实时查询引擎无法完成,批量分析引擎将复杂的统计和分析转化为映射化简MapReduce的并行任务,然后由MapReduce任务在HBase存储单元的底层存储文件HFile上直接进行并行分析和处理。
[0015]在上述技术方案的基础上,所述批量分析引擎包括编译器、执行器和元数据管理模块,编译器用于将SQL语句转化为MapReduce任务;执行器用于执行MapReduce任务,MapReduce任务直接在HBase的底层存储文件HFile上进行;元数据管理模块用于管理HBase存储单元存储的数据表,进行数据表的建立、删除和修改操作。
[0016]本发明还提供一种适用于上述系统的基于列存储的智能双引擎分析方法,包括以下步骤:
[0017]S1、用户在客户端输入SQL语句,客户端将用户输入的SQL语句发送到智能SQL路由单元,智能SQL路由单元在用户侧截获用户输入的SQL语句;
[0018]S2、智能SQL路由单元分析用户输入的SQL语句的类型,判断用户输入的SQL语句是数据定义语句,还是数据操作语句,如果用户输入的SQL语句是数据定义语句,则转到步骤S3 ;如果用户输入的SQL语句是数据操作语句,则转到步骤S4 ;
[0019]S3、如果用户输入的SQL语句是数据定义语句,智能SQL路由单元将该SQL语句路由到批量分析引擎,批量分析引擎的元数据管理模块根据数据定义语句的要求进行表的建立、删除和修改操作;
[0020]S4、如果用户输入的SQL语句是数据操作语句,判断该SQL语句是否为选择select语句,如果是select语句,则转到步骤S5 ;如果不是select语句,则转到步骤S7 ;
[0021]S5、如果select语句的查询条件是单列或双列,并且其中任意一列建有索引,则转到步骤S6 ;否则,转到步骤S7 ;
[0022]S6、智能SQL路由单元将该SQL语句路由到实时查询引擎进行查询:实时查询引擎根据用户的SQL语句找出对应的主键列或索引列,如果是主键列,则直接在HBase存储单元的表里,用HBase存储单元的编程接口进行快速查找;如果是索引列,则在索引表里利用HBase存储单元的编程接口进行快速查找,找到主键位置,然后再从主键表中进行查找;
[0023]S7、智能SQL路由单元将该SQL语句路由到批量分析引擎进行进行并行的查找和分析:批量分析引擎先进行一个刷新操作,将HBase存储单元缓存在内存中的数据,刷新到磁盘中,HBase存储单元在磁盘中保存文件的格式是以HFile格式来保存的;然后对HBase存储单元的底层存储文件进行分割操作,分割后形成一个个的文件块;再将文件块作为MapReduce的并行输入,进行并行的查找和分析。
[0024]与现有技术相比,本发明的优点如下:
[0025](I)本发明提出基于列存储的智能双引擎分析系统,将数据存储在HBase上,并在HBase上实现实时查询引擎和批量分析引擎,系统根据用户SQL的查询请求类型,智能SQL路由单元在用户侧对用户的SQL语句进行截获、分析和判断,并根据SQL的类型自动选择实时查询引擎或批量分析引擎,实时查询引擎用来处理简单、快捷的交互式查询,能够快速得到查询结果,较少耗费资源,而无需使用批量分析引擎,节约时间和资源;批量分析引擎用来进行大数据量的统计分析,实现高效的统计和分析。实验证明该系统既能满足实时性的简单查询,又能有效提高分析大规模数据的性能,满足用户对大规模数据的统计分析要求。
[0026](2)与传统的Hive分析方法不同,本发明将Hive的MapReduce任务映射到HFile (HBase的底层存储文件)上,在HFile上进行并行处理,能够有效提高效率,性能更好。
【专利附图】
【附图说明】
[0027]图1是本发明实施例中基于列存储的智能双引擎分析系统的结构框图。
[0028]图2是本发明实施例中基于列存储的智能双引擎分析方法的流程图。
【具体实施方式】
[0029]下面结合附图及具体实施例对本发明作进一步的详细描述。
[0030]参见图1所示,本发明实施例提供一种基于列存储的智能双引擎分析系统,包括HBase存储单元、客户端和智能SQL路由单元,该系统在用户侧实现智能SQL路由单元;该系统采用HBase存储单元作为底层数据的存储单元,并在HBase存储单元上建立实时查询引擎和批量分析引擎,该系统针对的数据是结构化的关系型数据。
[0031 ] HBase存储单元用于:实现对数据的底层存储,在存储数据时,将数据的主键自动映射到HBase的主键上,如果用户的数据还有其他列带有索引,那么通过单独的HBase表来生成二级索引表,二级索引表的主键对应用户表的索引列。
[0032]客户端用于:接收用户输入的SQL语句,然后将用户输入的SQL语句发送给智能SQL路由单元。
[0033]智能SQL路由单元用于:对用户输入的SQL语句进行解析,并进行分析和判断,根据分析的结果将SQL路由到实时查询引擎或者批量分析引擎,进行分析和查询,以获得更好的性能。
[0034]实时查询引擎用于:对于可以使用索引的较为简单的查询和检索,实时查询引擎将这些使用索引的简单查询转化为HBase的主键查询操作或范围查询操作,通过HBase的主键和索引对数据进行检索、查询和分析,从而能够快速得到查询结果,较少耗费资源,而无需使用批量分析引擎,节约时间和资源。
[0035]批量分析引擎是Hive在HBase存储单元上的实现,对于复杂的统计和分析,实时查询引擎无法完成,批量分析引擎将复杂的统计和分析转化为MapReduce的并行任务,然后由MapReduce任务在HBase的底层存储文件HFile上直接进行并行的分析和处理,从而实现高效的统计和分析。
[0036]批量分析引擎包括编译器、执行器和元数据管理模块,编译器用于将SQL语句转化为MapReduce任务;执行器用于执行MapReduce任务,MapReduce任务是直接在HBase存储单元的底层存储文件HFile上进行的,这种方式能够有效提高MapReduce执行的效率;元数据管理模块用于管理HBase存储单元存储的数据表,进行数据表的建立、删除和修改等操作。
[0037]本系统采用Hive作为批量查询引擎,Hive最初是将SQL查询引擎构建在HDFS之上的,Hive将SQL任务映射为HDFS上的MapReduce任务。由于本系统采用HBase作为存储引擎,不能直接用Hive在HBase存储单元上做分析,因此本系统并没有将Hive的MapReduce任务映射在HBase存储单元的应用接口上,为了提高效率,批量分析引擎将Hive的MapReduce任务映射到HBase存储单元的底层存储文件上。批量分析引擎通过Hive中的并行处理机制MapReduce的方式来对数据进行并行的分析和处理。
[0038]HBase是建立在hadoop文件系统之上的,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。HBase能通过主键和主键的范围来检索数据,因为HBase采用树形结构来存储数据,因此通过主键检索数据会非常高效。但是HBase的缺点是不能提供SQL接口。HBase的目标就是快速在主机内数十亿、百亿行数据中定位所需的数据并访问它,利用HBase技术可在廉价服务器上搭建起大规模结构化存储集群。
[0039]参见图2所示,本发明实施例还提供一种适用于上述系统的基于列存储的智能双引擎分析方法,包括以下步骤:
[0040]S1、用户在客户端输入SQL语句,客户端将用户输入的SQL语句发送到智能SQL路由单元,智能SQL路由单元在用户侧截获用户输入的SQL语句;
[0041 ] S2、智能SQL路由单元分析用户输入的SQL语句的类型,判断用户输入的SQL语句是数据定义语句,还是数据操作语句,如果用户输入的SQL语句是数据定义语句,则转到步骤S3 ;如果用户输入的SQL语句是数据操作语句,则转到步骤S4 ;
[0042]S3、如果用户输入的SQL语句是数据定义语句,智能SQL路由单元将该SQL语句路由到批量分析引擎,批量分析引擎的元数据管理模块根据数据定义语句的要求进行表的建立、删除和修改操作;
[0043]S4、如果用户输入的SQL语句是数据操作语句,判断该SQL语句是否为选择(select)语句,如果是select语句,则转到步骤S5 ;如果不是select语句,则转到步骤S7 ;
[0044]S5、如果select语句的查询条件是单列或双列,并且其中任意一列建有索引,则转到步骤S6 ;否则,转到步骤S7 ;
[0045]S6、智能SQL路由单元将该SQL语句路由到实时查询引擎进行查询:实时查询引擎根据用户的SQL语句找出对应的主键列或索引列,如果是主键列,则直接在HBase存储单元的表里,用HBase存储单元的编程接口进行快速查找;如果是索引列,则在索引表里利用HBase存储单元的编程接口进行快速查找,找到主键位置,然后再从主键表中进行查找;
[0046]S7、智能SQL路由单元将该SQL语句路由到批量分析引擎进行进行并行的查找和分析:批量分析引擎先进行一个刷新操作,将HBase存储单元缓存在内存中的数据,刷新到磁盘中,HBase存储单元在磁盘中保存文件的格式是以HFile格式来保存的;然后对HBase存储单元的底层存储文件进行分割操作,分割后形成一个个的文件块;再将文件块作为MapReduce的并行输入,进行并行的查找和分析。
[0047]本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
[0048]说明书中未详细描述的内容为本领域技术人员公知的现有技术。
【权利要求】
1.一种基于列存储的智能双引擎分析系统,包括HBase存储单元、客户端、智能结构化查询语言SQL路由单元,该系统在用户侧实现智能SQL路由单元;其特征在于:该系统采用HBase存储单元作为底层数据的存储单元,并在HBase存储单元上建立实时查询引擎和批量分析引擎,该系统针对的数据是结构化的关系型数据; 所述HBase存储单元用于:实现对数据的底层存储,在存储数据时,将数据的主键自动映射到HBase的主键上,如果用户的数据还有其他列带有索引,那么通过单独的HBase表来生成二级索引表,二级索引表的主键对应用户表的索引列; 所述客户端用于:接收用户输入的SQL语句,然后将用户输入的SQL语句发送给智能SQL路由单元; 所述智能SQL路由单元用于:对用户输入的SQL语句进行解析,并进行分析和判断,根据分析的结果将SQL路由到实时查询引擎或者批量分析引擎,进行分析和查询; 所述实时查询引擎用于:将使用索引的简单查询转化为HBase的主键查询操作或范围查询操作,通过HBase的主键和索引对数据进行检索、查询和分析; 所述批量分析引擎是Hive在HBase存储单元上的实现,对于复杂的统计和分析,实时查询引擎无法完成,批量分析引擎将复杂的统计和分析转化为映射化简MapReduce的并行任务,然后由MapReduce任务在HBase存储单元的底层存储文件HFile上直接进行并行分析和处理。
2.如权利要求1所述的基于列存储的智能双引擎分析系统,其特征在于:所述批量分析引擎包括编译器、执行器和元数据管理模块,编译器用于将SQL语句转化为MapReduce任务;执行器用于执行MapReduce任务,MapReduce任务直接在HBase的底层存储文件HFile上进行;元数据管理模块用于管理HBase存储单元存储的数据表,进行数据表的建立、删除和修改操作。
3.适用于权利要求1或2所述系统的基于列存储的智能双引擎分析方法,其特征在于,包括以下步骤: S1、用户在客户端输入SQL语句,客户端将用户输入的SQL语句发送到智能SQL路由单元,智能SQL路由单元在用户侧截获用户输入的SQL语句; S2、智能SQL路由单元分析用户输入的SQL语句的类型,判断用户输入的SQL语句是数据定义语句,还是数据操作语句,如果用户输入的SQL语句是数据定义语句,则转到步骤S3 ;如果用户输入的SQL语句是数据操作语句,则转到步骤S4 ; S3、如果用户输入的SQL语句是数据定义语句,智能SQL路由单元将该SQL语句路由到批量分析引擎,批量分析引擎的元数据管理模块根据数据定义语句的要求进行表的建立、删除和修改操作; S4、如果用户输入的SQL语句是数据操作语句,判断该SQL语句是否为选择select语句,如果是select语句,则转到步骤S5 ;如果不是select语句,则转到步骤S7 ;S5、如果select语句的查询条件是单列或双列,并且其中任意一列建有索引,则转到步骤S6 ;否则,转到步骤S7 ; S6、智能SQL路由单元将该SQL语句路由到实时查询引擎进行查询:实时查询引擎根据用户的SQL语句找出对应的主键列或索引列,如果是主键列,则直接在HBase存储单元的表里,用HBase存储单元的编程接口进行快速查找;如果是索引列,则在索引表里利用HBase存储单元的编程接口进行快速查找,找到主键位置,然后再从主键表中进行查找; S7、智能SQL路由单元将该SQL语句路由到批量分析引擎进行进行并行的查找和分析:批量分析引擎先进行一个刷新操作,将HBase存储单元缓存在内存中的数据,刷新到磁盘中,HBase存储单元在磁盘中保存文件的格式是以HFile格式来保存的;然后对HBase存储单元的底层存储文件进行分割操作,分割后形成一个个的文件块;再将文件块作为MapReduce的并行输入,进行并行的查找和分析。
【文档编号】G06F17/30GK104133858SQ201410335740
【公开日】2014年11月5日 申请日期:2014年7月15日 优先权日:2014年7月15日
【发明者】郝俊瑞, 向智宇, 许德玮, 高汉松, 郭嘉 申请人:武汉邮电科学研究院