首页> 中国专利> 一种分布式计算引擎使用动态用户访问S3对象存储的方法及装置

一种分布式计算引擎使用动态用户访问S3对象存储的方法及装置

摘要

本发明提供了一种动态用户访问S3对象存储的方法及装置,包括:用户体系映射配置库管理单元、计算引擎与配置库连接单元、S3用户信息获取单元、访问S3服务用户身份动态更改单元。采用计算引擎用户体系与S3对象存储用户体系映射的方式,在用户登录hive/spark计算引擎,使用外部表访问S3数据时,自动获取登录用户信息,在连接S3对象存储服务时,动态修改连接身份信息,解决了只能在配置文件配置固定用户的问题,并且满足了修改S3用户身份配置时,不重启服务自动生效的要求,大大提升计算引擎访问对象存储数据的灵活性、动态性、安全性和可用性,保证hive/spark计算引擎服务的稳定运行,为对象存储多场景下的数据利用提供有效支撑。

著录项

  • 公开/公告号CN112817997A

    专利类型发明专利

  • 公开/公告日2021-05-18

    原文格式PDF

  • 申请/专利权人 广州市品高软件股份有限公司;

    申请/专利号CN202110205107.X

  • 发明设计人 刘忻;李伟文;李才胜;

    申请日2021-02-24

  • 分类号G06F16/23(20190101);G06F16/28(20190101);G06F21/31(20130101);G06F21/62(20130101);

  • 代理机构44100 广州新诺专利商标事务所有限公司;

  • 代理人张玲春

  • 地址 510000 广东省广州市天河区软件路17号第G1栋

  • 入库时间 2023-06-19 11:02:01

说明书

技术领域

本发明涉及数据存储技术领域,特别涉及一种动态用户访问S3对象存储的方法及装置。

背景技术

对象存储是基于一种分布式存储的开放服务,在大数据领域得到非常广泛的应用,用于存储未经处理的原始数据,包括结构化数据、图片、文档、音视频等全数据形态数据。

S3是一种广泛用于构建数据糊平台的底层数据对象存储的引擎,当前大数据离线批量处理技术已经趋于稳定成熟,其中hive/spark已经是业界作为离线批量数据处理的事实标准,是一种支持多租户多用户的计算引擎。作为分布式计算引擎,其可以使用HDFS块文件分布式存储系统,也可以使用S3分布式对象文件存储系统等多种数据源,为其进行业务计算提供数据来源。

因为HDFS和hive/spark同属hadoop体系,拥有相同的用户体系和权限管理方式,采用操作系统的用户或使用环境变量设置访问用户,是一种弱用户权限的方式,很容易做到登录hive/spark的用户,与访问HDFS数据文件的用户统一,形成一致的用户权限。但是S3对象文件存储系统,是一套独立于hadoop体系的大数据存储框架,拥有自己独立用户体系和权限集,并且是强权限的访问控制,每个用户访问数据文件都要带上用户身份标识,只能访问有权限的数据。

并且,访问中只能以固定的S3用户访问S3的数据文件,在支持多租户多用户的分布式计算引擎中,存在严重的数据安全风险,丧失了S3的多用户强权限管理的优势能力,严重影响用户使用服务的体验。

发明内容

本发明的目的在于提供一种分布式计算引擎使用动态用户访问S3对象存储的方法及装置,以解决上述背景技术中提出的问题。

为了解决上述技术问题,本发明提供了一种动态用户访问S3对象存储的方法,采用计算引擎用户体系与S3对象存储用户体系映射的方式,在用户登录hive/spark计算引擎,使用外部表访问S3数据时,自动获取登录用户对应的S3用户信息、动态修改连接身份信息。

为了达到上述目的,本发明采用如下技术方案:

创建连接所述配置库线程,连接所述配置库,返回所述连接信息正常状态,打开连接所述配置库接口,所述连接信息存入连接池中。

配置hive/spark用户与S3用户的映射关系;获取配置库的连接信息,打开所述配置库接口;解析当前登录的用户信息,获取S3用户的身份信息与映射关系;拦截外部表访问S3对象存储服务配置库接口;更改所述S3用户身份信息,所述外部表继续访问所述S3对象存储服务。

在连接所述配置库中,返回所述连接信息异常状态,抛出所述异常状态,退出启动所述hive/spark服务。

验证所述登录信息,解析登录用户ID,基于所述登录用户ID返回所述S3用户映射信息,并将S3用户信息写入hive/spark缓存。

进一步的,所述S3用户信息包括:账号、fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey。

创建S3外部表指定S3文件路径,访问所述S3服务;设置拦截请求S3服务数据入口的方法,基于所述S3用户信息变更请求身份验证参数并返回;根据所述变更后的S3用户信息,返回所述S3服务数据请求;基于所述S3服务数据请求获取所述S3外部表指定所述S3文件路径的数据;完成所述S3用户请求,返回请求结果。

一种实现动态用户访问S3对象存储的装置,包括:用户体系映射配置库管理单元、计算引擎与配置库连接单元、S3用户信息获取单元、访问S3服务用户身份动态更改单元。

所述用户体系映射配置库管理单元,包括:

管理hive/spark用户体系与S3用户体系的映射管理功能,用户信息的增加、查询、修改、删除。

所述计算引擎与配置库连接单元用于获取配置库的连接信息,打开与配置库的连接通道,包括:执行单元,用于获取服务启动命令,执行所述启动命令;获取单元,用于获取配置库数据源连接信息;创建单元,用于创建连接配置库线程;判断单元,用于根据所述配置数据库源连接信息判断连接信息,并返回判断结果。

S3用户信息获取单元,用于解析当前登录的用户信息,获取与该用户映射的S3用户信息,包括:获取登录信息,解析登录用户ID;连接配置库,基于所述登录用户ID在S3用户体系映射表中获取映射的所述S3用户信息,将所述S3用户信息写入hive/spark计算引擎运行时缓存;

访问S3服务用户身份动态更改单元,用于拦截访问S3服务入口,更改正确的S3用户身份信息,包括:创建S3外部表指定S3文件路径,访问所述S3服务;设置拦截请求S3服务数据入口的方法,基于所述S3用户信息变更请求身份验证参数并返回;根据所述变更后的S3用户信息,返回所述S3服务数据请求;基于所述S3服务数据请求获取所述S3外部表指定所述S3文件路径的数据;完成所述S3用户请求,返回请求结果。

本发明的有益效果是:

在用户登录hive/spark计算引擎,使用外部表访问S3数据时,自动获取登录用户对应的S3用户fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey信息,在连接S3对象存储服务时,动态修改连接身份信息,解决了只能在配置文件配置固定用户的问题,满足了在多租户、多用户的分布式计算引擎中,使用独立的S3用户访问数据的安全性要求、也满足了其他S3用户数据,使用hive/spark外部表的方式访问数据的要求,并且满足了修改S3用户身份配置时,不重启服务自动生效的要求,大大提升计算引擎访问对象存储数据的灵活性、动态性、安全性和可用性,保证hive/spark计算引擎服务的稳定运行,为对象存储多场景下的数据利用提供有效支撑。

附图说明

图1为本发明一种分布式计算引擎使用动态用户访问S3对象存储的装置图;

图2为本发明一种分布式计算引擎使用动态用户访问S3对象存储的方法;

图3为本发明用户体系映射配置库管理单元示意图。

图4为本发明hive/spark引擎与配置库连接单元示意图。

图5为本发明映射的S3用户信息获取单元示意图。

图6为本发明访问S3用户身份配置动态更改单元示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于此描述的其他方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

本发明提供了一种动态用户访问S3对象存储的方法及装置,包括:用户体系映射配置库管理单元、计算引擎与配置库连接单元、S3用户信息获取单元、访问S3服务用户身份动态更改单元。采用计算引擎用户体系与S3对象存储用户体系映射的方式,在用户登录hive/spark计算引擎,使用外部表访问S3数据时,自动获取登录用户信息,在连接S3对象存储服务时,动态修改连接身份信息,解决了只能在配置文件配置固定用户的问题,并且满足了修改S3用户身份配置时,不重启服务自动生效的要求,大大提升计算引擎访问对象存储数据的灵活性、动态性、安全性和可用性,保证hive/spark计算引擎服务的稳定运行,为对象存储多场景下的数据利用提供有效支撑。

如图1所示,一种分布式计算引擎使用动态用户访问S3对象存储的装置,包括:用户体系映射配置库管理单元、计算引擎与配置库连接单元、S3用户信息获取单元、访问S3服务用户身份动态更改单元,其中:

所述用户体系映射配置库管理单元,如图3所示,负责维护hive/spark用户体系与S3用户体系的映射管理,包括用户的信息的新增、查询、修改、删除等功能;

进一步的,所述管理单元用于新增hive/spark用户信息,包括hive/spark用户ID,用户有效性、S3用户账号、fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey等信息;

进一步的,所述管理单元查询hive/spark用户体系与S3用户体系映射信息,包括hive/spark用户ID,用户有效性、S3用户账号、fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey等信息;

进一步的,所述管理单元修改hive/spark用户体系与S3用户体系映射信息,包括hive/spark用户ID,用户有效性、S3用户账号、fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey等信息;

进一步的,所述管理单元删除hive/spark用户体系与S3用户体系映射信息,删除后该用户不能再访问S3服务;

进一步的,所述管理单元用于可以重复执行所述用户的信息的新增、查询、修改、删除等功能。

优选的,所述计算引擎与配置库连接单元,如图4所示,负责hive/spark服务启动时,获取配置库的连接信息,打开与配置库的连接通道;

进一步的,管理员通过hive/spark计算引擎服务的启动命令,在服务器上启动服务;

进一步的,所述服务启动过程中,获取并返回配置库数据源连接信息,所述连接信息包括:数据源类型、数据源IP、端口、用户名、密码等连接属性;

进一步的,创建连接配置库线程,尝试与配置库进行连接;

进一步的,根据所述连接信息判断所述连接配置,连接正常则打开连接通道,并将所述连接信息存入连接池中,将在映射的S3用户信息获取单元中使用该连接;

进一步的,完成hive/spark计算引擎的服务启动;

进一步的,根据所述连接信息判断所述连接配置,连接异常则抛出异常信息,退出启动程序。

优选的,所述S3用户信息获取单元,如图5所示,负责在用户登录hive/spark服务时,解析当前登录的用户信息,获取与该用户映射的S3用户的身份信息;

进一步的,用户登录hive/spark计算引擎,输入用户账号,用户密码等登录信息;

进一步的,在登录过程中,hive/spark计算引擎验证用户输入的登录信息正确后,拦截所述登录信息,解析登录用户ID;

进一步的,连接配置库,使用登录用户ID判断,S3用户体系映射表,是否存在该用户ID,获取映射的S3用户信息;

进一步的,如果用户ID存在,则返回该用户的S3用户账号、fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey等信息,并写入hive/spark计算引擎运行时缓存;

进一步的,如果用户ID不存在,则抛出异常信息,用户登录失败。

优选的,所述访问S3服务用户身份动态更改单元,如图6所示,负责在使用hive/spark的外部表访问S3服务时,拦截访问S3服务入口,更改正确的S3用户身份信息,再继续访问S3服务;

进一步的,用户进入hive/spark服务后,创建S3外部表指定S3文件路径,执行查询、统计等SQL脚本,都将访问S3服务;

进一步的,在hive/spark请求S3服务数据的入口方法设置拦截;

进一步的,使用映射的S3用户信息获取单元中,缓存的S3用户身份信息,变更请求身份验证参数,fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey关键信息;

进一步的,使用所述变更后的S3用户身份信息,继续请求S3服务数据;

进一步的,返回所述请求,从所述S3服务中获取到外部表指定S3文件路径的数据内容;

进一步的,在hive/spark计算引擎,完成用户执行的SQL脚本,返回数据结果。

本发明装置的有益效果是,采用计算引擎用户体系与S3对象存储用户体系映射的方式,在用户登录hive/spark计算引擎,使用外部表访问S3数据时,自动获取登录用户对应的S3用户fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey信息,在连接S3对象存储服务时,动态修改连接身份信息,解决了只能在配置文件配置固定用户的问题,满足了在多租户、多用户的分布式计算引擎中,使用独立的S3用户访问数据的安全性要求、也满足了其他S3用户数据。

一种实现一分布式计算引擎使用动态用户访问S3对象存储的方法,如图2所示,配置hive/spark用户与S3用户的映射关系。

进一步的,启动hive/spark计算引擎服务,获取并返回配置库的连接信息;所述连接信息包括数据源类型、数据源IP、端口、用户名、密码等连接属性;

进一步的,创建连接配置库线程,尝试与配置库进行连接;

进一步的,根据所述连接信息判断连接配置库状态,连接正常则打开所述配置库接口,将所述连接信息存入连接池中;启动所述hive/spark计算引擎服务。

进一步的,解析当前登录的用户信息,获取S3用户的身份信息与映射关系;

进一步的,创建S3外部表指定S3文件路径,执行查询、统计等SQL脚本,都将访问S3服务;

进一步的,在hive/spark请求S3服务数据的入口方法设置拦截;

进一步的,使用映射的S3用户信息获取单元中,缓存的S3用户身份信息,变更请求身份验证参数,fs.s3n.awsAccessKeyId、fs.s3n.awsSecretAccessKey关键信息;

进一步的,使用所述变更后的S3用户身份信息,继续继续请求S3服务数据;

进一步的,返回所述请求,从S3服务中获取到外部表指定S3文件路径的数据内容;

进一步的,在hive/spark计算引擎中完成用户执行的SQL脚本,返回数据结果。

进一步的,所述连接数据库状态异常,则抛出异常信息,退出启动hive/spark计算引擎。

本发明所述的分布式计算引擎使用动态用户访问S3对象存储方法的有益效果是,使用hive/spark外部表的方式访问数据的要求,并且满足了修改S3用户身份配置时,不重启服务自动生效的要求,大大提升计算引擎访问对象存储数据的灵活性、动态性、安全性和可用性,保证hive/spark计算引擎服务的稳定运行,为对象存储多场景下的数据利用提供有效支撑。

上述实施例中的各装置、功能模块、功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,硬盘或光盘等。

任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换都应该涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。

以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,故凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号