什么是多租户?
多租户是一种软件架构模式,通俗来讲,就是构建一套应用来服务多个用户,但又能确保一定的隔离性。区别于用户的概念,用户是资源的使用者,而租户一般对应一个组织或一类用户。通常数据权限、计算资源与租户直接绑定,而租户与用户又存在一定的映射关系,这样,用户就可以访问该租户所具备的资源。
为什么需要多租户?
多租户管理的优点在于降低了信息化建设和管理的成本,尤其是在大数据领域,随着数据量快速增长,数据集中化程度越来越高,企业内部对算力的需求也逐步增大,大量业务应用构建在统一的大数据平台之上,对资源的控制、对权限的控制也越来越越严格,各子公司、各部门、各业务线既有共享资源的需求、又希望通过一定的数据隔离和资源隔离技术来解决安全性和资源抢占的问题,所以多租户管理在大数据技术方案中已经变成了一个必选方案。
大数据的多租户管的是什么?
大数据的技术组件众多,但无外乎可以分为数据存储型的、数据查询型的、数据计算型的。所以多租户管理就是针对这些核心组件的权限、资源和配额进行管理。存储型的,主要就是分布式存储系统HDFS,配额和目录权限管理;数据查询型的,主要是hbase、hive,库、表、字段相关的scheme权限管理,以及相应的增删改查权限;以及计算型的,主要是yarn,管理cpu和内存;
常见的大数据多租户方案设计
由于开源大数据技术的复杂性,每个组件的数据隔离、资源配额控制都大不相同,所以也就没有统一的产品或技术能完成多租户的管理,现在比较常用的是通过多套技术组合来实现。
先看下常见需求:假设一个公司有一个大数据平台P,上面有两个部门A、B,两个部门都希望有独享的计算资源,做到互不影响,又希望数据存储和查询做到隔离,避免数据泄露。
从使用者角度讲,能满足他们的隔离性需求即可,这里面就包括数据的隔离性和资源的隔离性。但从提供者角度,也就是平台,还要考虑安全客户端的认证鉴权、统一用户中心管理、统一权限管理、用户操作审计等等一系列的管理方案,同时还要考虑资源的超卖问题(毕竟业务申请的资源都会虚高,所以适当的超卖是不影响的)。
这里边涉及到的技术体系就包括Kerberos(统一认证)、Ranger权限管理(CDH提供的是Sentry)、Ldap(身份信息管理)、Yarn的队列机制等等
从平台层面
第一步:先规划YARN的队列划分,可以考虑一个租户一个队列,通过给队列划分配额来控制队列资源,根据业务使用模式配置是否抢占。
第二步:编写ldif文件,将组织信息、用户信息等初始化到ldap内,相当于创建一个租户,ldap实现了身份信息管理。
第三步:kerberos会同步ldap内的用户,并针对每个租户生成一个票据,可以理解为令牌文件,用户只有在安全客户端上用这个令牌做认证,才能执行后续的平台操作。
第四步:在ranger中配置权限策略,ranger很强大, 可以通过plugin的方式适配几乎所有的核心大数据组件,来完成大数据组件的权限管理。ranger会从ldap同步身份信息(需要修改配置),将租户的身份信息与权限信息做关联,就完成了权限的管理。这里就包括yarn的队列权限、hive的库表字段权限、hbase的schema权限等等。
第五步:ranger还提供了审计功能,可以对提交到大数据平台的操作,包括hive的访问、hbase的访问、hdfs目录的访问等等做检索。记录的信息包括:时间、发起请求的主机IP、租户信息(ldap内的身份信息)、执行的操作(SQL或其他执行命令)、是否成功等信息。
从用户使用层面
只需要登录到主机上,将令牌做一个kinit,然后访问大数据平台资源,包括提交任务到队列、访问hive表。而不需要关心底层的细节,就已经实现了资源隔离和数据安全隔离。
转载请注明:IT运维空间 » linux » 大数据技术|什么是多租户,多租户方案设计
发表评论