本发明涉及网络技术领域,特别是涉及一种HDFS文件系统的多租户网盘权限管理方法及系统。
背景技术:
Hadoop的分布式文件系统(HDFS)是一个高度容错性的文件系统,部署在廉价的机器上,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。网盘是指把HDFS文件系统按需分隔成多个逻辑上独立的数据存储空间,对多个独立的业务用户提供海量数据的云存储服务,包括空间配额管理和权限管理。可以通过WEB界面以及后台API的方式,供不同的业务部门、个人使用。网盘相关的业务需求:一个网盘属于一个用户组使用(如公司、业务部门);一个用户组有多个用户;一个用户组可拥有多个网盘;一个用户可属于多个用户组;一个用户组的多个网盘中,允许部分用户有权使用部分网盘。
原生的Hadoop(Apache基金会所开发的分布式系统基础架构),不管是通过操作系统方式登录到集群的Datanode节点上,还是通过Hadoop的REST API对数据进行操作,底层执行操作的用户往往都是HDFS、Hive、Hbase等Hadoop内置用户,无法与实际业务的用户进行映射。
如果把Hadoop作为云存储平台,现有技术中,当网盘用户需要通过API方式直接操作网盘数据时,底层使用的仍然是HDFS等超级用户的权限,网盘用户无法使用自身用户的权限通过Hadoop的原生读写API或使用集群的HDFS文件系统查询命令来(如Hadoop fs–ls)查看到自己所属的网盘数据。
技术实现要素:
为了克服上述现有技术的缺陷,本发明要解决的技术问题是提供一种HDFS文件系统的多租户网盘权限管理方法及系统。
为解决上述技术问题,本发明中的一种HDFS文件系统的多租户网盘权限管理方法,包括:
针对任一网盘,在HDFS文件系统的NameNode节点创建与所述网盘名称一致的操作系统用户组;
在所述HDFS文件系统中创建子目录作为所述网盘;
将所述子目录的根权限赋予所述网盘的使用用户组。
可选地,所述将所述子目录的根权限赋予所述网盘的使用用户组之后,还包括:
当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户。
具体地,所述当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户之后,还包括:
当在所述WEB界面上监测到所述使用用户建立的文件或文件夹时,获取所述使用用户对所述文件或所述文件夹设置的第一读写权限;
将所述文件或所述文件夹存储在所述子目录下;
根据所述第一读写权限设置所述子目录下的所述文件或所述文件夹的第二读写权限。
具体地,所述根据获取的读写权限设置将所述子目录下的所述文件或所述文件夹的读写权限之后,还包括:
将所述使用用户注册为Kerberos用户;
启动Kerberos鉴权模式;
调用所述操作系统用户根据所述第二读写权限访问所述子目录下的所述文件或所述文件夹。
可选地,所述在所述HDFS文件系统中创建子目录作为所述网盘,还包括:
根据所述网盘名称设置所述子目录的路径。
为解决上述技术问题,本发明中的一种HDFS文件系统的多租户网盘权限管理系统,包括:
用户管理模块,用于针对任一网盘,在HDFS文件系统的NameNode节点创建与所述网盘名称一致的操作系统用户组;
创建模块,用于在所述HDFS文件系统中创建子目录作为所述网盘;
权限管理模块,用于将所述子目录的根权限赋予所述网盘的使用用户组。
可选地,所述用户管理模块,还用于当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户。
具体地,所述用户管理模块,还用于当在所述WEB界面上监测到所述使用用户建立的文件或文件夹时,获取所述使用用户对所述文件或所述文件夹设置的第一读写权限;
将所述文件或所述文件夹存储在所述子目录下;
根据所述第一读写权限设置所述子目录下的所述文件或所述文件夹的第二读写权限。
具体地,所述系统还包括:
鉴权模块,用于将所述使用用户注册为Kerberos用户;
启动Kerberos鉴权模式;
调用所述操作系统用户根据所述第二读写权限访问所述子目录下的所述文件或所述文件夹。
可选地,所述用户管理模块,还用于根据所述网盘名称设置所述子目录的路径。
本发明有益效果如下:
本发明中方法及系统实现了上层业务系统用户、上层业务系统用户组与操作系统用户、操作系统用户组以及HDFS数据用户、用户组的统一,既保证了权限管理的简单清晰,又实现了在Hadoop集群中可靠的数据权限隔离;有效解决了现有技术不能通过Hadoop原生API的方式直接读写网盘数据的问题。
附图说明
图1是本发明实施例中HDFS文件系统的总体存储结构示意图;
图2是本发明实施例中HDFS文件系统中一可选网盘的存储结构示意图;
图3是本发明实施例中HDFS文件系统中另一可选网盘的存储结构示意图。
具体实施方式
为了解决现有技术的问题,本发明提供了一种HDFS文件系统的多租户网盘权限管理方法及系统,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不限定本发明。
本发明实施例中一种HDFS文件系统的多租户网盘权限管理方法,其包括:
针对任一网盘,在HDFS文件系统的NameNode节点创建与所述网盘名称一致的操作系统用户组;
在所述HDFS文件系统中创建子目录作为所述网盘;
将所述子目录的根权限赋予所述网盘的使用用户组。
也就是说,为了支持网盘用户既能在WEB界面上操作网盘数据,也能通过Hadoop原生API的方式直接读写网盘数据,本发明提出如下思路:
1、在Hadoop集群的NameNode(管理文件系统的命名空间)所在服务器上创建与网盘名称一致的linux操作系统用户组(DataNode节点上无需创建),创建与网盘使用用户的名称一致的Linux操作系统用户;DataNode节点为文件系统的工作节点。
2、Hadoop集群启动Kerberos(网络认证协议)鉴权模式,每个网盘使用用户都注册为kerberos用户,这样,在操作系统层面,操作系统用户需要先执行Kinit命令才能以网盘用户的身份访问网盘数据;
3、在HDFS文件系统中创建子目录作为网盘,将该网盘对应的子目录权限赋予某个Linux用户组--即为网盘使用用户组,如某网盘HDFS路径为/disk/abc,该子目录的属主为超级用户hdfs,用户组即为未来拥有权限的网盘用户组abc(亦为NameNode节点上的Linux用户组),读写权限设置为770,即只允许同用户组的用户进入该网盘,其它用户组禁止访问。
进一步说,所述将所述子目录的根权限赋予所述网盘的使用用户组之后,还包括:
当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户。
其中,所述当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户之后,还包括:
当在所述WEB界面上监测到所述使用用户建立的文件或文件夹时,获取所述使用用户对所述文件或所述文件夹设置的第一读写权限;
将所述文件或所述文件夹存储在所述子目录下;
根据所述第一读写权限设置所述子目录下的所述文件或所述文件夹的第二读写权限。
其中,所述根据获取的读写权限设置将所述子目录下的所述文件或所述文件夹的读写权限之后,还包括:
将所述使用用户注册为Kerberos用户;
启动Kerberos鉴权模式;
调用所述操作系统用户根据所述第二读写权限访问所述子目录下的所述文件或所述文件夹。
进一步说,所述在所述HDFS文件系统中创建子目录作为所述网盘,还包括:
根据所述网盘名称设置所述子目录的路径。
详细说,一个网盘对应HDFS文件系统的一个子目录。HDFS文件系统(存储系统)为每个网盘默认创建一个用户组(即资源ID),同一网盘的实验操作者(使用用户),均属于这个用户组。
实验操作者与网盘的关系,在存储系统中映射为用户与用户组的关系。
网盘中子目录和文件可以有不同的属主(即操作者),属主自行设置是否允许同组读写。
若一个操作者在上层业务系统中可使用多个网盘,则在存储系统中被加入到对应网盘的用户组。
如图1所示,在HDFS文件系统中创建网盘abc、bcd、cde,并分别设置配额、属主、用户组、根权限。
其中,在网盘abc中,用户组名也叫做abc。
如图2所示,在abc组中的两个用户user1和user2分别创建了自己的文件夹或文件,可以设置各自的文件夹或文件的权限属性,允许或限制同组其它用户对数据的读写操作,如750是允许同组可读,770是同组可写,700则是禁止同组读写。
如图3所示,网盘cde中,对应用户组cde,组中包含了用户user2和user5,其中user2有权操作。
本发明中方法及系统实现了上层业务系统用户、上层业务系统用户组与操作系统用户、操作系统用户组以及HDFS数据用户、用户组的统一,既保证了权限管理的简单清晰,又实现了在Hadoop集群中可靠的数据权限隔离。本发明中方法及系统实现了网盘使用用户既能在WEB界面上操作网盘数据,也能通过Hadoop原生API的方式直接读写网盘数据。
本发明进一步提出一种HDFS文件系统的多租户网盘权限管理系统。
本发明实施例中一种HDFS文件系统的多租户网盘权限管理系统,包括:
用户管理模块,用于针对任一网盘,在HDFS文件系统的NameNode节点创建与所述网盘名称一致的操作系统用户组;
创建模块,用于在所述HDFS文件系统中创建子目录作为所述网盘;
权限管理模块,用于将所述子目录的根权限赋予所述网盘的使用用户组。
进一步说,所述用户管理模块,还用于当在所述网盘的WEB界面创建使用用户时,在所述NameNode节点创建与所述使用用户名称一致的操作系统用户。
具体说,所述用户管理模块,还用于当在所述WEB界面上监测到所述使用用户建立的文件或文件夹时,获取所述使用用户对所述文件或所述文件夹设置的第一读写权限;
将所述文件或所述文件夹存储在所述子目录下;
根据所述第一读写权限设置所述子目录下的所述文件或所述文件夹的第二读写权限。
具体说,所述系统还包括:
鉴权模块,用于将所述使用用户注册为Kerberos用户;
启动Kerberos鉴权模式;
调用所述操作系统用户根据所述第二读写权限访问所述子目录下的所述文件或所述文件夹。
进一步说,所述用户管理模块,还用于根据所述网盘名称设置所述子目录的路径。
本发明中系统实现了上层业务系统用户、上层业务系统用户组与操作系统用户、操作系统用户组以及HDFS数据用户、用户组的统一,既保证了权限管理的简单清晰,又实现了在Hadoop集群中可靠的数据权限隔离。本发明中方法及系统实现了网盘使用用户既能在WEB界面上操作网盘数据,也能通过Hadoop原生API的方式直接读写网盘数据。
虽然本申请描述了本发明的特定示例,但本领域技术人员可以在不脱离本发明概念的基础上设计出来本发明的变型。
本领域技术人员在本发明技术构思的启发下,在不脱离本发明内容的基础上,还可以对本发明做出各种改进,这仍落在本发明的保护范围之内。