CN115757470A - 元数据访问方法、装置、电子设备及存储介质 - Google Patents
元数据访问方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115757470A CN115757470A CN202211486310.XA CN202211486310A CN115757470A CN 115757470 A CN115757470 A CN 115757470A CN 202211486310 A CN202211486310 A CN 202211486310A CN 115757470 A CN115757470 A CN 115757470A
- Authority
- CN
- China
- Prior art keywords
- target
- metadata
- metastore
- fragment
- instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种元数据访问方法、装置、电子设备及存储介质,该方法包括:获取由预设的Waggle Dance向目标MetaStore实例转发的数据访问请求,数据访问请求携带客户端请求访问的目标元数据的元目标信息;从数据访问请求中,解析出元目标信息,并根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求;根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,多个数据库表分片是按预设分片规则对目标MetaStore实例所对应的元数据库进行切分所生成的。通过本申请,解决在元数据库数据存储量大时,元数据访问速度缓慢、Hive稳定性差的问题。
Description
技术领域
本申请涉及大数据处理技术领域,尤其涉及一种元数据访问方法、装置、电子设备及存储介质。
背景技术
相关技术中,Hive是基于Hadoop(由Apache基金会所开发的分布式系统基础架构)的一个数据仓库工具,能将结构化的数据文件映射为一张数据库表,并提供结构化查询语言(Structured Query Language,简称SQL)查询功能,能将SQL语句转变成面向大数据并行处理的计算模型MapReduce任务来执行;相关技术中,Hive的元数据存储在关系型数据库(例如:MySQL数据库)中,通过Hive的元数据存储MetaStore(Hive用来管理库表元数据的一个服务)来访问。Hive Metastore服务主要是由多个HiveMetastore实例通过负载均衡技术组成,所有的HiveMetastore实例共享一套主从MySQL环境作为Hive元数据存储。
在相关技术中,随着相关数据业务的不断增长,Hive元数据库中的数据越来越多,会出现单表存储超过上亿条记录的情况,如此会导致MySQL的性能严重下降,出现查询或访问元数据速度缓慢的情况;同时,在业务高峰期间,经常导致机器CPU使用率达到100%,严重影响服务稳定性。
针对相关技术中在Hive元数据库数据存储量大时,MySQL的查询压力大、元数据访问速度缓慢、Hive稳定性差的问题,尚未存在有效的解决方案。
发明内容
本申请提供了一种元数据访问方法、装置、电子设备及存储介质,以至少解决相关技术中在Hive元数据库数据存储量大时,MySQL的查询压力大、元数据访问速度缓慢、Hive稳定性差的问题。
第一方面,本申请提供了一种元数据访问方法,包括:获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,所述数据访问请求携带客户端请求访问的目标元数据的元目标信息;从所述数据访问请求中,解析出所述元目标信息,并根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求;根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,其中,多个所述数据库表分片是按预设分片规则对所述目标MetaStore实例所对应的元数据库进行切分所生成的。
第二方面,本申请提供了一种元数据访问装置,包括:
获取模块,用于获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,所述数据访问请求携带客户端请求访问的目标元数据的元目标信息;
处理模块,用于从所述数据访问请求中,解析出所述元目标信息,并根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求;
访问模块,用于根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,其中,多个所述数据库表分片是按预设分片规则对所述目标MetaStore实例所对应的元数据库进行切分所生成的。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的元数据访问方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的元数据访问方法的步骤。
与相关技术相比,在本实施例中提供的元数据访问方法、装置、电子设备及存储介质,通过获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,所述数据访问请求携带客户端请求访问的目标元数据的元目标信息;从所述数据访问请求中,解析出所述元目标信息,并根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求;根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,其中,多个所述数据库表分片是按预设分片规则对所述目标MetaStore实例所对应的元数据库进行切分所生成的,解决了在Hive元数据库数据存储量大时,MySQL的查询压力大、元数据访问速度缓慢、Hive稳定性差的问题,实现了为元数据库解压、提升Hive稳定性及提高元数据查询及访问速度的有益效果。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例元数据访问方法的流程示意图;
图2是本申请实施例Waggle_dance与Hive MetaStore交互的示意图一;
图3是本申请实施例Waggle_dance与Hive MetaStore交互的示意图二;
图4是本申请实施例分库的示意图;
图5是本申请优选实施例元数据访问的流程示意图;
图6是本申请实施例的分库分表中间控制器的示意图;
图7是根据本申请实施例的元数据访问装置的结构框图;
图8是本申请实施例的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在对本申请实施例进行说明之前,以下先对本申请中所涉及的术语及现有元数据访问方案的实现流程进行说明如下:
Hive:Hive是基于Hadoop的一个数据仓库工具,能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行;Hive的元数据存储关系型数据库(例如:MySQL数据库)中,通过Hive MetaStore来访问。HiveMetastore服务主要是由多个Hive Metastore实例通过负载均衡技术组成,所有的HiveMetastore实例共享一套主从MySQL环境作为Hive元数据存储。
Hive MetaStore:Hive Metastore是Hive用来管理库表元数据的一个服务,一般用关系型数据库存储。
HiveServer2:一个服务端接口,使远程客户端可以执行对Hive的查询并返回结果。
Hadoop:一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储;Hadoop提供了分布式存储框架HDFS,分布式计算框架MapReduce,分布式调度框架Yarn。
Waggle_dance,是Hive MetaStore的一个路由服务,它完整的实现了HiveMetaStore的Thr ift API,用户需要访问Hive MetaStore的时候直接访问Waggle Dance即可。
SQL:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
现有的元数据访问流程如下:
第一步,客户端编写SQL(数据)并提交;
第二步,Hiveserver2端口接收客户端提交来的SQL,与HiveMetaStore服务沟通,预期获取元数据;
第三步,HiveMetaStore服务接收HiveServer2的请求,转换为相应的查询SQL,查询元数据库并返回结果;
第四步,Hiveserver2获取元数据后,将SQL编译解析,转换为物理执行计划;
第五步,HiveServer2将物理执行计划提交至分布式查询引擎执行;
第六步,查询引擎执行完后返回结果给HiveServer2,HiveServer2处理结果后将其返回给客户端。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
图1是根据本申请实施例元数据访问方法的流程示意图。如图1所示,本申请实施例提供了一种元数据访问方法,该方法包括如下步骤:
步骤S101,获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,数据访问请求携带客户端请求访问的目标元数据的元目标信息。
在本实施例中,执行本申请实施例的元数据访问方法的执行主体是在多个MetaStore实例与对应的元数据库之间增设的分库分表中间控制器;在本实施例中,该控制器在执行本申请实施例的访问方法的流程之前,Hive对应的Waggle Dance会根据客户端提交的数据访问请求所对应的请求类型,将数据访问请求转发至对应的MetaStore实例,其中,请求类型是指配置的MetaStore实例对关联的元数据库中的元数据的读写操作的权限,例如:只读、可读/写;在其中一些可选方式中,Waggle Dance还能够根据数据访问请求携带客户端请求访问的目标元数据的元目标信息的数据名称确定需要向其转发数据访问请求的MetaStore实例,也就是将客户端发起的数据访问请求路由到对应的MetaStore实例。
在本实施例中,分库分表中间控制器通过在目标MetaStore实例预期向其关联的元数据库发送该数据访问请求以查询员数据时,通过拦截该数据访问请求,从而获得该数据访问请求。
在本实施例中,将现有的Hive元数据库(Hive DB)进行切分,籍以在Hive DB层面将元数据分布多套MySQL环境存储,其中,一套MySQL环境包括一个MetaStore实例和对应的MySQL;同时,在本实施例中,配置多个主Metastore实例和多个从Metastore实例,主Metastore实例对应的MySQL对应为主MySQL,主Metastore实例对主MySQL执行可读可写操作,从Metastore实例对应的MySQL为从MySQL,从Metastore实例对从MySQL执行只读操作;在本实施例中,通过设置主从Metastore实例分离的方式,降低元数据库的访问压力,并且通过设置多个主从Metastore实例,保证服务的稳定性。
需要说明的是,在本实施例中,Waggle Dance相当于Hive Metastore的一个路由服务,实现了Metastore的Thrift API,用户需要访问Metastore的时候直接访问WaggleDance,而Waggle Dance背后则对接了多个Hive Metastore,把这些本来互不相连的Metastore组合成了一个整体,其中,Thrift通过一个中间语言(接口定义语言IDL)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实施;API是指应用程序接口。
步骤S102,从数据访问请求中,解析出元目标信息,并根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求。
在本实施例中,在获取到数据访问请求后,会解析数据访问请求,籍以获得待访问的目标元数据对应的元目标信息,也就是通过解析数据访问请求,从而至少获知预期访问存储在元数据库中的元数据的数据名称;在其中一些实施例方式中,元数据及其元目标信息包括但不限于:库表的名字,库表的列和分区及其属性,库表的属性(内部表和外部表),库表的数据所在目录。
在本实施例中,在解析出元目标信息后,需要根据该元目标信息确定目标元数据存储位置所在的目标库表分片,也就是确定访问目标元数据的物理存储地址(例如:对应的元数据库中水平拆分出的某个目标库表分片),然后,分库分表中间控制器基于该物理存储地址生成对应的查询请求,以基于该查询请求与对应的元数据库进行沟通,并查询该元数据库,从而获得对应的目标元数据;在本实施例中,对应的元数据库是对Hive的元数据库进行垂直切分,并分布于不同节点上的元数据库(也可以称为分库);同时,该元数据库作为对应的Metastore实例的存储,也就是Hive的多个Metastore实例并非是共享一套主从MsSQL数据库,而是每个Metastore实例对应一个MsSQL;通过在Hive DB层面进行分库切分,至少降低元数据库的访问压力,也就是按不同需求访问不同的源数据库。
在本实施例中,对Hive DB进行垂直切分(生成多个分库),并不能解决对应元数据库中的单数据库表数据量过大导致的元数据查询或访问缓慢的问题,因此,在本申请实施例中,还对每个垂直切分后生成的元数据库中的数据库表进行水平拆分,进而生成多个存储元数据的数据库表分片,每个数据库表分片对应一张表,例如:以TBLS表为例,在水平拆分前,对应的单数据库表为DB0,水平拆分3个表,对应的数据库表分片则为:TAB_0、TAB_1、TAB_2;在本实施例中,在完成对数据库表的水平拆分后,对应的,一个MetaStore实例对应多个数据库表分片;在其中一些可选实施例中,在水平拆分生成数据库表分片时,以TBLS表为例,会采用Hash切分的方法进行处理生成数据库表分片,具体地,将某个元数据对应的库表(以表的形式表征元数据)的表编码ID经过hash后,与表分片数做模运算(例如:取模运算),将元数据均匀的分布到不同的数据库表分片中,例如:库表的表编码ID(记作idtable_id)为10,对应水平切分生成的数据库表分片:TAB_0、TAB_1、TAB_2,对应的表分片数shared_num为3,则10mod 3=1,对应表示该库表的数据应存于切分生成的数据库表分片TAB_1中;可以理解的是,从元数据存储层面,采用分库分表的方式,避免Mysql单库所带来的海量数据查询缓慢和服务不稳定的情况发生。
当然,可以理解的时,对Hive DB进行分库分表是在布局HiveDB架构及存储对应的元数据已完成的,在本实施例中,通过执行查找目标库表分片,从而完成对应的元数据访问。
步骤S103,根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,其中,多个数据库表分片是按预设分片规则对目标MetaStore实例所对应的元数据库进行切分所生成的。
在本实施例中,分库分表中间控制器在解析完数据访问请求后,确定目标元数据所处目标库表分片,会通过访问目标库表分片所处元数据库,也就是目标MetaStore实例所对应的元数据库,然后访问目标库表分片,进而获得该目标元数据。
在本实施例中,预设分片规则至少为上述分库分表拆分进程中的分表所对应的生成规则;本实施例中,执行查询或访问的操作,则是根据待访问的目标元数据所对应的元目标信息确定到对应的目标库表分片,对应的,分库分表中间控制器根据预设分片规则,数据访问SQL,将目标库表分片对应的逻辑表名转换为实际存储上的物理表名,最后,重写查询SQL,通过JDBC将重写发查询SQL执行,以获得目标元数据或访问结果。
通过步骤S101至步骤S103,采用获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,数据访问请求携带客户端请求访问的目标元数据的元目标信息;从数据访问请求中,解析出元目标信息,并根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求;根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,多个数据库表分片是按预设分片规则对目标MetaStore实例所对应的元数据库进行切分所生成的;解决了在Hive元数据库数据存储量大时,MySQL的查询压力大、元数据访问速度缓慢、Hive稳定性差的问题,实现了为元数据库解压、提升Hive稳定性及提高元数据查询及访问速度的有益效果。
需要说明的是,在本实施例中,在元数据访问层面采用联邦方案,实现元数据水平扩展能力,为MySQL数据库解压,提升Hive的稳定性;将Hive DB切分,在Hive DB层面将元数据分成多套MySQL环境存储,在不改变原有Hive Metastore接口(Hiveserver2)的情况下,将客户端发起的请求路由到多套的Hive metastore存储环境上并支持读写;从元数据存储层面,采用分库分表的方式,避免MySQL单库造成的海量数据查询缓慢和服务不稳定的情况发生。
在其中一些实施例中,根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求,通过如下步骤实现:
步骤21、在元目标信息中检测目标元数据所对应的目标库表分片的库表名称。
步骤22、根据目标库表分片的库表名称所对应的逻辑表编号和多个数据库表分片对应的表分片数,生成目标库表分片所对应的物理存储信息,其中,物理存储信息用于表征目标库表分片在目标MetaStore实例所对应的元数据库中的存储位置。
在本实施例中,逻辑表编号是对应的物理存储空间上不存在的逻辑表,该逻辑表编号是根据多个数据库表分片与每个数据库表分片中存储的元数据的映射关系所确定的,也就是表面目标库表分片在分库分表后所对应的映射关系总表中的位置或排列位置;在本实施例中,是需要通过将该逻辑表编号对应的逻辑表的表名转换为实际存储的物理表的物理表名,也就是确定目标库表分片实际的物理存储位置;在本实施例中,在查询元数据的查询操作中,进行的是与分库分表时生成对应的表的处理的逆运算。
步骤23、将物理存储信息作为访问地址参数写入预设的查询指令,生成查询请求。
在本实施例中,在确定目标库表分片对应的实际的物理存储信息,也就是在分库分表操作所生成的多个分表中,确定出目标库表分片,并生成指向该目标库表分片的查询指令,从而得到能查询及访问目标元数据的查询请求。
通过上述步骤21至步骤23中的在元目标信息中检测目标元数据所对应的目标库表分片的库表名称;根据目标库表分片的库表名称所对应的逻辑表编号和多个数据库表分片对应的表分片数,生成目标库表分片所对应的物理存储信息;将物理存储信息作为访问地址参数写入预设的查询指令,生成查询请求,实现对数据访问请求的解析并重写查询请求,使的分库分表中间控制器能快速查询目标库表分片,并完成查询及访问目标元数据,以向目标MetaStore实例返回访问结果,提高元数据查询的速度。
在其中一些实施例中,根据目标库表分片的库表名称所对应的逻辑表编号和多个数据库表分片对应的表分片数,生成目标库表分片所对应的物理存储信息,通过如下步骤实现:
步骤31、获取第一逻辑表编号参数表,其中,第一逻辑表编号参数表包括库表名称、逻辑表编号及两者之间的对应关系信息。
在本实施例中,第一逻辑表标号参数表是在将元数据存储在对Hive的元数据库进行垂直切分和水平切分(分库分表),使的每个MetaStore实例均对应有多个数据库表分片的过程中,生成的映射元数据、对应的数据库表分片及数据库分库的关系表。
步骤32、在第一逻辑表编号参数表中,查询与目标库表分片的库表名称所对应的逻辑表编号。
在本实施例中,可以采用遍历的方式查询第一逻辑表编号参数表,以确定目标库表分片的库表名称所对应的逻辑表编号。
步骤33、利用与预设的分片规则所对应的表分片运算算法,对逻辑表编号和表分片数进行数理运算,并根据数理运算所得运算值确定目标库表分片所对应的物理存储信息。
在本实施例中,通过逻辑表编号和表分片数进行取模运算,从而完成在Hash取模生成的数据库表分片中快速确定出目标库表分片对应的物理存储信息。
通过上述步骤中的获取第一逻辑表编号参数表;在第一逻辑表编号参数表中,查询与目标库表分片的库表名称所对应的逻辑表编号;利用与预设的分片规则所对应的表分片运算算法,对逻辑表编号和表分片数进行数理运算,并根据数理运算所得运算值确定目标库表分片所对应的物理存储信息,实现将逻辑表名转换为实际存储目标元数据的物理表名,以使的分库分表中间控制器重写查询请求后,能快速查询目标库表分片,并完成查询及访问目标元数据,以向目标MetaStore实例返回访问结果,提高元数据查询的速度。
在其中一些实施例中,分片规则包括Hash取模分片,对逻辑表编号和表分片数进行数理运算,并根据数理运算所得运算值确定目标库表分片所对应的物理存储信息,通过如下步骤实现:
步骤331、将逻辑表编号利用hash算法处理,得到哈希值;
步骤332、对哈希值与表分片数进行取模运算,得到运算值;
步骤333、在多个数据库表分片中,选取数据库表的排列序号与运算值对应的数据库表分片,确定目标库表分片包括排列序号与运算值对应的数据库表分片,并确定物理存储信息至少包括目标库表分片对应的排列序号。
通过上述步骤中的将逻辑表编号利用hash算法处理,得到哈希值;对哈希值与表分片数进行取模运算,得到运算值;在多个数据库表分片中,选取数据库表的排列序号与运算值对应的数据库表分片,确定目标库表分片包括排列序号与运算值对应的数据库表分片,并确定物理存储信息至少包括目标库表分片对应的排列序号,进一步实现将逻辑表名转换为实际存储目标元数据的物理表名,以使的分库分表中间控制器重写查询请求后,能快速查询目标库表分片,并完成查询及访问目标元数据,以向目标MetaStore实例返回访问结果,提高元数据查询的速度。
在其中一些可选实施方式中,在访问元数据对应读写操作为查询操作,分库分表中间进行处理时,首先会根据先前配置的分片规则,解析数据访问请求所对应的SQL,将逻辑表名转换为实际存储上的物理表名,最后重写查询请求SQL,通过JDBC将查询请求SQL执行,并返回元数据访问结果;具体地,以查询TBLS表为例,并将库表的表编码ID记作idtable_id,当查询SQL为:select*from tabls where table_id=10此时,tabls为逻辑上的表,物理上并不存在该名字的表;经过分片计算,查询请求SQL重写成:select*from tabls_1where table_id=10,此时的tabls_1为真正存储于mysq l的物理表;在访问元数据对应读写操作为插入操作时,因为涉及到了自增主键等操作。为此,分库分表中间控制器配置了一个通过Twitter-Snowflake算法,生成全局唯一的64位自增ID算法,为每次主键自增的插入主键配置全局唯一id。
在其中一些实施例中,在获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求之前,还执行如下步骤:
步骤41、Waggle Dance在接收到客户端发送的数据访问请求后,在数据访问请求中检测元目标信息。
步骤42、Waggle Dance在与Waggle Dance对接的多个MetaStore实例中,根据元目标信息,检测出目标MetaStore实例,其中,每个MetaStore实例关联对应的元数据库。
步骤43、Waggle Dance将数据访问请求转发至目标MetaStore实例。
在本实施例中,当客户端欲访问对应元数据时,则通过访问Waggle Dance,实现访问Metastore实例的需求,籍以进一步通过Metastore实例查询或访问目标元数据,当然,在本申请实施例中,通过Metastore实例查询或访问目标元数据转换为通过分库分表中间控制器执行。
在本实施例中,Waggle Dance执行的是将对应客户端的数据访问请求路由到对应的Metastore实例,数据访问请求中携带的目标元数据的元目标信息会映射该数据访问请求需要路由转发至的目标对象(某个Metastore实例),因此,在从数据访问请求中获得元目标信息后,Waggle Dance能够快速的确定对应的目标Metastore实例,也就是根据元目标信息,检测出目标MetaStore实例;当然,一个Metastore实例是对应的一个元数据库的,同时,通过配置Metastore实例为主Metastore实例和从Metastore实例,使的对应的MySQL数据库对应也为主/从MySQL数据库。
Waggle Dance通过实施上述步骤中的在接收到客户端发送的数据访问请求后,在数据访问请求中检测元目标信息;在与Waggle Dance对接的多个MetaStore实例中,根据元目标信息,检测出目标MetaStore实例;将数据访问请求转发至目标MetaStore实例,实现了将数据访问请求转发到不同的Metastore进行处理。
需要说明的是,在本实施例中,执行步骤41至步骤43的执行主体为Waggle Dance;Waggle Dance会根据客户端提交的数据访问请求所对应的请求类型,将数据访问请求转发至对应的MetaStore实例,以使对应的MetaStore实例预期向关联的元数据库发送数据访问请求从获取到目标元数据,也就是客户端提交是数据访问请求需要通过Waggle Dance进行路由转发才能传送至对应的MetaStore实例,进一步使的本申请实施例的执行主体分库分表中间控制器在对应的MetaStore实例预期向关联的元数据库发送数据访问请求时,拦截获取到对应的数据访问请求,并基于该拦截到的数据访问请求执行本申请实施例的元数据访问方法。
在其中一些实施例中,Waggle Dance通过实施如下步骤,以实现在与WaggleDance对接的多个MetaStore实例中,根据元目标信息,检测出目标MetaStore实例:
步骤51、在元目标信息中检测目标元数据的数据名称;
步骤52、获取第一配置参数表,其中,第一配置参数表包括元数据对应的数据名称和每项元数据所配置的MetaStore实例两者之间的对应关系信息;
步骤53、在第一配置参数表中,查询与目标元数据的数据名称对应的MetaStore实例,得到第一MetaStore实例,并确定目标MetaStore实例包括第一MetaStore实例。
在其中一些实施例中,获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,通过如下步骤实现:
步骤61、在目标MetaStore实例预期向对应的元数据库发送请求查询元数据的意向请求时,拦截意向请求,其中,意向请求携带数据访问请求。
步骤62、从拦截的意向请求中,解析获取数据访问请求。
在本实施例中,MetaStore实例想要与元数据库Mysql进行沟通时,分库分表中间控制器会拦截携带数据访问请求的意向请求,将意向请求路由至自己的节点上,从而解析获取数据访问请求。
在其中一些实施例中,根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,通过如下步骤实现:通过Java数据库连接JDBC在多个数据库表分片查询目标库表分片,以及访问目标库表分片,以获得目标元数据。
图2是本申请实施例Waggle_dance与Hive MetaStore交互的示意图一,图3是本申请实施例Waggle_dance与Hive MetaStore交互的示意图二,图4是本申请实施例分库的示意图,图5是本申请优选实施例元数据访问的流程示意图,图6是本申请实施例的分库分表中间控制器的示意图,以下参考图2至图6,对本申请实施例中所涉及的元数据访问的流程及相关架构进行说明如下:
参考图2,本申请采用对MetaStore进行联邦,具体地,以Hive DB切分,在Hive DB层面将元数据分布多套MySQL环境存储,每套metastore实例对应自己的存储;在Hiveserver2服务与Metastore服务中间增加路由;HiveServer2不直接访问Metastore,而是直接访问路由层,由路由层将请求转发到多个MetaStore实例。
参考图3,Waggle Dance相当于Metastore的一个路由服务,通过Waggle Dance实现了Metastore的Thr ift API,用户需要访问Metastore的时候直接访问Waggle Dance,而Waggle Dance对接了多个Hive Metastore,并将互不相连的Metastore组合成了一个整体;在本实施例中,配置多个主Metastore,多个从Metastore,主Metastore可读可写,从Metastore只读;通过主从分离的方式,降低元数据库的访问压力,而且主从Metastore都是多实例,保证了服务的稳定性;在本实施例中,Waggle Dance能够根据请求类型,将请求转发到不同的Metastore进行处理。
参考图4至图5,本申请实施例进行的分库处理如下:先对整体MetaStore做垂直切分,按表联系紧密程度,将一个库拆分为多个库,并分布于不同节点上;但因仅作垂直切分,并不能解决单表数据量过大导致的查询缓慢问题,还得对大表进行水平拆分;在本实施例中,以TBLS表为例,采用Hash切分的方法,将表ID经过hash后,与表分片数做模运算,将数据均匀的分布到不同的表中。例如:表id table_id=10,分片数shared_num=3,10mod 3=1则该表的数据应存于table1中。
参考图2至图6,本申请所涉及的元数据访问打的流程如下:
主体流程保持不变,具体可参考前述的现有的元数据访问流程第一步至第六步,反生改变的在于:MetaStore服务想要与元数据库Mysql进行沟通时,分库分表中间控制器会拦截其数据访问请求,将对应拦截的数据访问请求路由至自身的节点上,经过分片计算,分库分表中间控制器通过查询数据库,最后将数据返回至MetaStore。
在查询操作中,分库分表中间控制器首先会根据先前配置的分片规则,解析SQL,将逻辑表名转换为实际存储上的物理表名,最后重写sq l,通过JDBC将其执行,并返回结果。
以查询TBLS表为例,查询SQL为:
select*from tabls where table_id=10
此时,tabls为逻辑上的表,物理上并不存在该名字的表。经过分片计算,SQL重写成:
select*from tabls_1where table_id=10
此时,tabls_1为真正存储于mysql的物理表。
在其中一些可选实施方式,还会执行插入操作,因插入操作的流程会涉及到了自增主键等操作,为此,分库分表中间控制器配置了一个通过Twitter-Snowflake算法,生成全局唯一的64位自增ID算法,为每次主键自增的插入操作配置全局唯一id。
在本实施例中还提供了一种元数据访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的元数据访问装置的结构框图,如图7所示,该元数据访问装置包括:
获取模块71,用于获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,数据访问请求携带客户端请求访问的目标元数据的元目标信息;
处理模块72,与获取模块71耦合连接,用于从数据访问请求中,解析出元目标信息,并根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求;
访问模块73,与处理模块72耦合连接,用于根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,其中,多个数据库表分片是按预设分片规则对目标MetaStore实例所对应的元数据库进行切分所生成的。
通过本申请实施例的元数据访问装置,采用采用获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,数据访问请求携带客户端请求访问的目标元数据的元目标信息;从数据访问请求中,解析出元目标信息,并根据元目标信息,重构查询存储目标元数据的目标库表分片的查询请求;根据查询请求,在多个存储元数据的数据库表分片中,查询出目标库表分片,以在访问目标库表分片后获取目标元数据,多个数据库表分片是按预设分片规则对目标MetaStore实例所对应的元数据库进行切分所生成的;解决了在Hive元数据库数据存储量大时,MySQL的查询压力大、元数据访问速度缓慢、Hive稳定性差的问题,实现了为元数据库解压、提升Hive稳定性及提高元数据查询及访问速度的有益效果。
在其中一些实施例中,该处理模块72进一步包括:
第一检测单元,用于在元目标信息中检测目标元数据所对应的目标库表分片的库表名称;
第一生成单元,与第一检测单元耦合连接,用于根据目标库表分片的库表名称所对应的逻辑表编号和多个数据库表分片对应的表分片数,生成目标库表分片所对应的物理存储信息,其中,物理存储信息用于表征目标库表分片在目标MetaStore实例所对应的元数据库中的存储位置;
第一写入单元,与第一生成单元耦合连接,用于将物理存储信息作为访问地址参数写入预设的查询指令,生成查询请求。
在其中一些实施例中,该第一生成单元还用于:获取第一逻辑表编号参数表,其中,第一逻辑表编号参数表包括库表名称、逻辑表编号及两者之间的对应关系信息;在第一逻辑表编号参数表中,查询与目标库表分片的库表名称所对应的逻辑表编号;利用与预设的分片规则所对应的表分片运算算法,对逻辑表编号和表分片数进行数理运算,并根据数理运算所得运算值确定目标库表分片所对应的物理存储信息。
在其中一些实施例中,分片规则包括Hash取模分片,该第一生成单元还用于将逻辑表编号利用hash算法处理,得到哈希值;对哈希值与表分片数进行取模运算,得到运算值;在多个数据库表分片中,选取数据库表的排列序号与运算值对应的数据库表分片,确定目标库表分片包括排列序号与运算值对应的数据库表分片,并确定物理存储信息至少包括目标库表分片对应的排列序号。
在其中一些实施例中,在获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求之前,该元数据访问装置通过WaggleDance实施在接收到客户端发送的数据访问请求后,在数据访问请求中检测元目标信息;在与Waggle Dance对接的多个MetaStore实例中,根据元目标信息,检测出目标MetaStore实例,其中,每个MetaStore实例关联对应的元数据库;将数据访问请求转发至目标MetaStore实例。
在其中一些实施例中,Waggle Dance还用于在元目标信息中检测目标元数据的数据名称;获取第一配置参数表,其中,第一配置参数表包括元数据对应的数据名称和每项元数据所配置的MetaStore实例两者之间的对应关系信息;在第一配置参数表中,查询与目标元数据的数据名称对应的MetaStore实例,得到第一MetaStore实例,并确定目标MetaStore实例包括第一MetaStore实例。
在其中一些实施例中,该获取模块71还用于在目标MetaStore实例预期向对应的元数据库发送请求查询元数据的意向请求时,拦截意向请求,其中,意向请求携带数据访问请求;从拦截的意向请求中,解析获取数据访问请求。
在其中一些实施例中,该查询模块73还用于通过Java数据库连接JDBC在多个数据库表分片查询目标库表分片,以及访问目标库表分片,以获得目标元数据。
图8是本申请实施例的电子设备结构示意图,如图8所示,本申请实施例提供了一种电子设备,包括处理器81、通信接口82、存储器83和通信总线84,其中,处理器81,通信接口82,存储器83通过通信总线84完成相互间的通信,
存储器83,用于存放计算机程序;
处理器81,用于执行存储器83上所存放的程序时,实现图1中的方法步骤。
该电子设备中的处理实现图1中的方法步骤,所带来的技术效果与上述实施例执行图1中元数据访问方法的技术效果一致,在此不再赘述。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的元数据访问方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的元数据访问方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种元数据访问方法,其特征在于,包括:
获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,所述数据访问请求携带客户端请求访问的目标元数据的元目标信息;
从所述数据访问请求中,解析出所述元目标信息,并根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求;
根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,其中,多个所述数据库表分片是按预设分片规则对所述目标MetaStore实例所对应的元数据库进行切分所生成的。
2.根据权利要求1所述的方法,其特征在于,根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求,包括:
在所述元目标信息中检测所述目标元数据所对应的所述目标库表分片的库表名称;
根据所述目标库表分片的库表名称所对应的逻辑表编号和多个所述数据库表分片对应的表分片数,生成所述目标库表分片所对应的物理存储信息,其中,所述物理存储信息用于表征所述目标库表分片在所述目标MetaStore实例所对应的元数据库中的存储位置;
将所述物理存储信息作为访问地址参数写入预设的查询指令,生成所述查询请求。
3.根据权利要求2所述的方法,其特征在于,根据所述目标库表分片的库表名称所对应的逻辑表编号和多个所述数据库表分片对应的表分片数,生成所述目标库表分片所对应的物理存储信息,包括:
获取第一逻辑表编号参数表,其中,所述第一逻辑表编号参数表包括库表名称、逻辑表编号及两者之间的对应关系信息;
在所述第一逻辑表编号参数表中,查询与所述目标库表分片的库表名称所对应的逻辑表编号;
利用与预设的分片规则所对应的表分片运算算法,对所述逻辑表编号和所述表分片数进行数理运算,并根据数理运算所得运算值确定所述目标库表分片所对应的所述物理存储信息。
4.根据权利要求3所述的方法,其特征在于,所述分片规则包括哈希Hash取模分片,对所述逻辑表编号和所述表分片数进行数理运算,并根据数理运算所得运算值确定所述目标库表分片所对应的所述物理存储信息,包括:
将所述逻辑表编号利用hash算法处理,得到哈希值;
对所述哈希值与所述表分片数进行取模运算,得到所述运算值;
在多个所述数据库表分片中,选取数据库表的排列序号与所述运算值对应的所述数据库表分片,确定所述目标库表分片包括所述排列序号与所述运算值对应的所述数据库表分片,并确定所述物理存储信息至少包括所述目标库表分片对应的所述排列序号。
5.根据权利要求1所述的方法,其特征在于,在获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求之前,所述方法包括:
所述Waggle Dance在接收到所述客户端发送的所述数据访问请求后,在所述数据访问请求中检测所述元目标信息;
所述Waggle Dance在与所述Waggle Dance对接的多个MetaStore实例中,根据所述元目标信息,检测出所述目标MetaStore实例,其中,每个所述MetaStore实例关联对应的元数据库;
所述Waggle Dance将所述数据访问请求转发至所述目标MetaStore实例。
6.根据权利要求5所述的方法,其特征在于,所述Waggle Dance在与所述Waggle Dance对接的多个MetaStore实例中,根据所述元目标信息,检测出所述目标MetaStore实例,包括:
所述Waggle Dance在所述元目标信息中检测所述目标元数据的数据名称;
所述Waggle Dance获取第一配置参数表,其中,所述第一配置参数表包括元数据对应的数据名称和每项元数据所配置的MetaStore实例两者之间的对应关系信息;
所述Waggle Dance在第一配置参数表中,查询与所述目标元数据的数据名称对应的MetaStore实例,得到第一MetaStore实例,并确定所述目标MetaStore实例包括所述第一MetaStore实例。
7.根据权利要求5所述的方法,其特征在于,获取由预设的联邦路由管理服务器WaggleDance向目标元数据存储MetaStore实例转发的数据访问请求,包括:
在所述目标MetaStore实例预期向对应的所述元数据库发送请求查询元数据的意向请求时,拦截所述意向请求,其中,所述意向请求携带所述数据访问请求;
从拦截的所述意向请求中,解析获取所述数据访问请求。
8.根据权利要求1所述的方法,其特征在于,根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,包括:通过Java数据库连接JDBC在多个所述数据库表分片查询所述目标库表分片,以及访问所述目标库表分片,以获得所述目标元数据。
9.一种元数据访问装置,其特征在于,包括:
获取模块,用于获取由预设的联邦路由管理服务器Waggle Dance向目标元数据存储MetaStore实例转发的数据访问请求,其中,所述数据访问请求携带客户端请求访问的目标元数据的元目标信息;
处理模块,用于从所述数据访问请求中,解析出所述元目标信息,并根据所述元目标信息,重构查询存储所述目标元数据的目标库表分片的查询请求;
访问模块,用于根据所述查询请求,在多个存储元数据的数据库表分片中,查询出所述目标库表分片,以在访问所述目标库表分片后获取所述目标元数据,其中,多个所述数据库表分片是按预设分片规则对所述目标MetaStore实例所对应的元数据库进行切分所生成的。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一项所述的元数据访问方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的元数据访问方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486310.XA CN115757470A (zh) | 2022-11-24 | 2022-11-24 | 元数据访问方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486310.XA CN115757470A (zh) | 2022-11-24 | 2022-11-24 | 元数据访问方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115757470A true CN115757470A (zh) | 2023-03-07 |
Family
ID=85338821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211486310.XA Pending CN115757470A (zh) | 2022-11-24 | 2022-11-24 | 元数据访问方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757470A (zh) |
-
2022
- 2022-11-24 CN CN202211486310.XA patent/CN115757470A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11514046B2 (en) | Tiering with pluggable storage system for parallel query engines | |
US10275184B2 (en) | Framework for volatile memory query execution in a multi node cluster | |
CN101727465B (zh) | 分布式列存储数据库索引建立、查询方法及装置与系统 | |
US9251163B2 (en) | File sharing system and file sharing method | |
US10140351B2 (en) | Method and apparatus for processing database data in distributed database system | |
US20120265782A1 (en) | Arrangement for a distributed file system having data objects mapped independent of any data object attribute | |
US20150120645A1 (en) | System and Method for Creating a Distributed Transaction Manager Supporting Repeatable Read Isolation level in a MPP Database | |
CN110147407B (zh) | 一种数据处理方法、装置及数据库管理服务器 | |
CN107562757B (zh) | 基于分布式文件系统的查询、访问方法、装置及系统 | |
US11954117B2 (en) | Routing requests in shared-storage database systems | |
US20160026660A1 (en) | Distribution of an object in volatile memory across a multi-node database | |
CN111597148B (zh) | 用于分布式文件系统的分布式元数据管理方法 | |
US9635099B2 (en) | Federating applications providing modular data | |
US20090043726A1 (en) | Spatial join in a parallel database management system | |
CN113051250A (zh) | 数据库集群的扩容方法和装置、电子设备和存储介质 | |
CN111651424A (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN107493309B (zh) | 一种分布式系统中的文件写入方法及装置 | |
US11567969B2 (en) | Unbalanced partitioning of database for application data | |
US11620285B2 (en) | Automatic database query translation | |
CN115757470A (zh) | 元数据访问方法、装置、电子设备及存储介质 | |
CN115576919A (zh) | 一种数据分库分表的方法 | |
US10114864B1 (en) | List element query support and processing | |
US20220365905A1 (en) | Metadata processing method and apparatus, and a computer-readable storage medium | |
Dobos et al. | A comparative evaluation of NoSQL database systems | |
CN112632114B (zh) | Mpp数据库快速读取数据的方法、装置及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |