基于Hive数据仓库的元数据读取方法及装置与流程

文档序号:17926394发布日期:2019-06-15 00:26阅读:224来源:国知局
基于Hive数据仓库的元数据读取方法及装置与流程

本发明涉及数据读取技术领域,尤指一种基于hive数据仓库的元数据读取方法及装置。



背景技术:

随着大数据技术的日益完善,越来越多的企业开始使用hadoop平台来管理自己数据资源。hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的结构化查询语言(structuredquerylanguage,sql)查询功能,可以将sql语句转换为mapreduce任务进行运行。其优点是学习成本低,可以通过sql语句快速实现简单的mapreduce统计,不必开发专门的mapreduce应用,十分适合数据仓库的统计分析。同时hive作为hadoop生态的一员,其拥有管理海量数据的能力,能对海量数据进行统计分析计算,满足企业相关业务需要。

通常hadoop平台会作为一个基础设施在企业范围内使用,因此hive的安全管控显的尤为重要,比如多个部门需要使用到hive数据仓库,其中a部门需要分析涉密数据,那么如何对hive数据仓库进行管控,使得这些数据其他部门是无权访问的呢?

为解决上述问题,需要启用一个对用户操作进行监控的框架,使每个用户的操作都在设定的权限范围内,这个框架就是---apachesentry。apachesentry是运行在hadoop平台上的基于细粒度的数据、元数据授权框架。apachesentry可以和hive数据仓库紧密结合,使得hive数据仓库上的安全管控可以做到非常的细粒度,且配合hive数据仓库的thrift服务易于实现安全管控业务系统。

apachesentry的出现基本解决了hive数据仓库的安全管控问题,但它有一个缺点:对于需要管控hive数据仓库操作安全的业务系统,维护一张角色到权限的数据表,每次用户需要操作hive数据仓库时,sentry会在操作前检验权限的合法性达到管控的目的。在更新角色的权限时,通常需要事先获取hive数据仓库的元数据,以便业务系统的正确赋权。当权限粒度太细,比如说列级别权限,sentry需要遍历数据库、数据表和数据列,使三级递归的性能消耗很大。

对于此问题官方的两个解决思路是:

第一个思路,读取元数据库,hive数据仓库组件启动需要有元数据库的支持,默认是postgre,可选mysql。元数据库中保存所有hive数据仓库的数据库、数据表、数据列的元数据。元数据库再通过一些自身的连接权限控制来保证基本的安全性。此方法就是让权限管控业务系统直接连接元数据库,再解析出整个hive数据仓库中各数据表的元数据以供给业务系统使用。

第二个思路,定时器更新,官方认为hive数据仓库的元数据变动并不频繁,因此可以使用linux系统的定时器任务,定时对元数据进行更新。

对于读取元数据库的解决思路,由于不同环境下业务系统的元数据库配置不尽相同,且很多时候为了安全性元数据库的用户密码不会公开,故使用上还是不灵活。定时器更新,如果定时间隔过短则依然消耗大量集群算力,如果定时间隔过长则在更新间隔期内用户无法读取到最新元数据,安全管控系统便形同虚设。

由上可见,hive数据仓库的安全管控已经相对完善,但是在hive数据仓库的元数据读取时还需要更加高效、便捷的方法。



技术实现要素:

本发明实施例提供一种基于hive数据仓库的元数据读取方法及装置,以实现更加高效、便捷的读取hive数据仓库的元数据。

根据本发明实施例,提供一种基于hive数据仓库的元数据读取方法,所述方法包括:

接收安全管控系统发送的携带关键字段的读取请求;

确定本地缓存中是否存储所述关键字段对应的元数据;

若确定所述本地缓存中存储所述关键字段对应的元数据,则向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应;若确定所述本地缓存中未存储所述关键字段对应的元数据,则以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据,向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应。

具体的,确定本地缓存中是否存储所述关键字段对应的元数据,具体包括:

在所述本地缓存中查找所述关键字段;

若在所述本地缓存中查找到所述关键字段,则确定所述本地缓存中存储所述关键字段对应的元数据;

若在所述本地缓存中未查找到所述关键字段,则确定所述本地缓存中未存储所述关键字段对应的元数据。

具体的,以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据,具体包括:

获取读取方式配置文件;

从所述配置文件中确定携带生效标记的第一读取方式;

使用所述第一读取方式将所述关键字段发送给所述hive数据仓库;

并接收所述hive数据仓库返回的所述关键字段对应的元数据。

可选的,还包括:

接收携带第二读取方式的读取方式更改指令;

删除所述第一读取方式的生效标记;以及,

在所述第二读取方式添加所述生效标记。

可选的,以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据之后,还包括:

将所述关键字段对应的元数据存储到所述本地缓存中。

根据本发明实施例,还提供一种基于hive数据仓库的元数据读取装置,所述装置包括:

接收模块,用于接收安全管控系统发送的携带关键字段的读取请求;

确定模块,用于确定本地缓存中是否存储所述关键字段对应的元数据;

读取模块,用于若确定所述本地缓存中存储所述关键字段对应的元数据,则向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应;若确定所述本地缓存中未存储所述关键字段对应的元数据,则以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据,向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应。

具体的,所述确定模块,具体用于:

在所述本地缓存中查找所述关键字段;

若在所述本地缓存中查找到所述关键字段,则确定所述本地缓存中存储所述关键字段对应的元数据;

若在所述本地缓存中未查找到所述关键字段,则确定所述本地缓存中未存储所述关键字段对应的元数据。

具体的,所述读取模块,用于以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据,具体用于:

获取读取方式配置文件;

从所述配置文件中确定携带生效标记的第一读取方式;

使用所述第一读取方式将所述关键字段发送给所述hive数据仓库;

并接收所述hive数据仓库返回的所述关键字段对应的元数据。

可选的,还包括添加模块和删除模块,其中:

所述接收模块,还用于接收携带第二读取方式的读取方式更改指令;

所述删除模块,用于删除所述第一读取方式的生效标记;以及,

所述添加模块,用于在所述第二读取方式添加所述生效标记。

可选的,还包括存储模块,用于:

在所述读取模块以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据之后,将所述关键字段对应的元数据存储到所述本地缓存中。

本发明有益效果如下:

本发明实施例提供一种基于hive数据仓库的元数据读取方法及装置,通过接收安全管控系统发送的携带关键字段的读取请求;确定本地缓存中是否存储所述关键字段对应的元数据;若确定所述本地缓存中存储所述关键字段对应的元数据,则向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应;若确定所述本地缓存中未存储所述关键字段对应的元数据,则以当前生效的第一读取方式从所述hive数据仓库读取所述关键字段对应的元数据,向所述安全管控系统发送携带所述关键字段对应的元数据的读取响应。该方案中,会在本地缓存中存储元数据,在接收到读取请求后,首先确定本地缓存中是否存储需要的元数据,若确定本地缓存中存储有需要的元数据,则直接向安全管控系统发送携带该元数据的读取响应,若确定本地缓存中未存储该元数据,则以当前生效的第一读取方式从hive数据仓库读取该元数据,再向安全管控系统发送携带该元数据的读取响应,从而可以实现高效、便捷的元数据读取方式。

附图说明

图1为本发明实施例中一种基于hive数据仓库的元数据读取方法的流程图;

图2为本发明实施例中一种基于hive数据仓库的元数据读取装置的结构示意图。

具体实施方式

为了实现更加高效、便捷的读取hive数据仓库的元数据,本发明实施例提供一种基于hive数据仓库的元数据读取方法,该方法的流程如图1所示,执行步骤如下:

s11:接收安全管控系统发送的携带关键字段的读取请求。

hive数据仓库中的元数据非常多,当用户需要读取其中的某些元数据时,可以发送关键字段来读取,安全管控系统对用户身份进行甄别后,才会发送携带关键字段的读取请求。

s12:确定本地缓存中是否存储关键字段对应的元数据,若确定本地缓存中存储关键字段对应的元数据,则执行s13;若确定本地缓存中未存储关键字段对应的元数据,则执行s14。

可以设置本地缓存,在本地缓存中缓存hive数据仓库中的部分元数据,在接收到读取请求后,首先在本地缓存中查找。

s13:向安全管控系统发送携带关键字段对应的元数据的读取响应。

s14:以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据,执行s13。

该方案中,会在本地缓存中存储元数据,在接收到读取请求后,首先确定本地缓存中是否存储需要的元数据,若确定本地缓存中存储有需要的元数据,则直接向安全管控系统发送携带该元数据的读取响应,若确定本地缓存中未存储该元数据,则以当前生效的第一读取方式从hive数据仓库读取该元数据,再向安全管控系统发送携带该元数据的读取响应,从而可以实现高效、便捷的元数据读取方式。

具体的,上述s12中确定本地缓存中是否存储关键字段对应的元数据,具体包括:

在本地缓存中查找关键字段;

若在本地缓存中查找到关键字段,则确定本地缓存中存储关键字段对应的元数据;

若在本地缓存中未查找到关键字段,则确定本地缓存中未存储关键字段对应的元数据。

本地缓存中存储的元数据也都携带关键字段,可以根据读取请求中的关键字段在本地缓存中进行查询,若在本地缓存中查找到该关键字段,则确定本地缓存中存储该关键字段对应的元数据;若在本地缓存中未查找到该关键字段,则确定本地缓存中未存储该关键字段对应的元数据。

具体的,上述s14中以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据,具体包括:

获取读取方式配置文件;

从配置文件中确定携带生效标记的第一读取方式;

使用第一读取方式将关键字段发送给hive数据仓库;

并接收hive数据仓库返回的关键字段对应的元数据。

可以设置专门的读取方式配置文件来存储可用的读取方式,目前可用的读取方式包括thriftapi、mysql和postgre数据库三种方式,可以使用生效标记来标识当前生效的读取方式。

下面列举两种读取方式进行说明。如果第一读取方式是使用thriftserver的方式,则直接使用api从hive数据仓库读取该关键字段对应的元数据;如果是使用postgre数据库的方式,那么要先从第一读取方式中解析postgre数据库的连接方式信息,并通过相应的数据库驱动连接到postgre数据库后读取该关键字段对应的元数据。

可选的,还包括:

接收携带第二读取方式的读取方式更改指令;

删除第一读取方式的生效标记;以及,

在第二读取方式添加生效标记。

有时用户可能需要更改读取方式,可以通过发送读取方式更改指令进行更改,直接在读取方式更改指令中携带第二读取方式,接收到用户发送的该读取方式更改指令后,删除第一读取方式的生效标记,并在第二读取方式添加生效标记即可。

可选的,上述s14中以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据之后,还包括:

将关键字段对应的元数据存储到本地缓存中。

由于本地缓存中未存储该关键字段对应的元数据,可以将该关键字段对应的元数据保存在本地缓存中,以便于后续方便查找。

若本地缓存的存储空间有限,还可以检测本地缓存是否已达到最大容量,若已达到最大容量,可以清理本地缓存,采用的方式可以但不限于为删除最早存入的元数据。

基于同一发明构思,本发明实施例提供一种基于hive数据仓库的元数据读取装置,该装置的结构如图2所示,包括:

接收模块21,用于接收安全管控系统发送的携带关键字段的读取请求;

确定模块22,用于确定本地缓存中是否存储关键字段对应的元数据;

读取模块23,用于若确定本地缓存中存储关键字段对应的元数据,则向安全管控系统发送携带关键字段对应的元数据的读取响应;若确定本地缓存中未存储关键字段对应的元数据,则以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据,向安全管控系统发送携带关键字段对应的元数据的读取响应。

该方案中,会在本地缓存中存储元数据,在接收到读取请求后,首先确定本地缓存中是否存储需要的元数据,若确定本地缓存中存储有需要的元数据,则直接向安全管控系统发送携带该元数据的读取响应,若确定本地缓存中未存储该元数据,则以当前生效的第一读取方式从hive数据仓库读取该元数据,再向安全管控系统发送携带该元数据的读取响应,从而可以实现高效、便捷的元数据读取方式。

具体的,确定模块22,具体用于:

在本地缓存中查找关键字段;

若在本地缓存中查找到关键字段,则确定本地缓存中存储关键字段对应的元数据;

若在本地缓存中未查找到关键字段,则确定本地缓存中未存储关键字段对应的元数据。

具体的,读取模块23,用于以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据,具体用于:

获取读取方式配置文件;

从配置文件中确定携带生效标记的第一读取方式;

使用第一读取方式将关键字段发送给hive数据仓库;

并接收hive数据仓库返回的关键字段对应的元数据。

可选的,还包括添加模块和删除模块,其中:

接收模块,还用于接收携带第二读取方式的读取方式更改指令;

删除模块,用于删除第一读取方式的生效标记;以及,

添加模块,用于在第二读取方式添加生效标记。

可选的,还包括存储模块,用于:

在读取模块以当前生效的第一读取方式从hive数据仓库读取关键字段对应的元数据之后,将关键字段对应的元数据存储到本地缓存中。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1