多租户技术(multi-tenancy technology)是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。在大数据环境下实现多租户涉及如下关键技术:
1. 资源池
Hadoop资源池(pool),或者作业池。 每个pool里有一定量的资源(管理员配置),每个用户属于某个pool,其提交的作业可使用这个pool中的资源。资源的分配主要是依据CPU虚拟核数和内存量。
2. 公平调度
是一种赋予作业(job)资源的方法,它的目的是让所有的作业随着时间的推移,都能平均的获取等同的共享资源。当单独一个作业在运行时,它将使用整个集群。当有其它作业被提交上来时,系统会将任务(task)空闲时间片(slot)赋给这些新的作业,以使得每一个作业都大概获取到等量的CPU时间
3、Kerberos
Kerberos可以将认证的密钥在集群部署时事先放到可靠的节点上。集群运行时,集群内的节点使用密钥得到认证。只有被认证过节点才能正常使用。企图冒充的节点由于没有事先得到的密钥信息,无法与集群内部的节点通信。
4、Sentry
Sentry是一个Hadoop的授权模块,为了对正确的用户和应用程序提供精确的访问级别,包括一个核心授权提供者和一个结合层。可以实现对hive、hbase细粒度级、基于角色的授权。
基于以上关键技术设计大数据中心下的多租户功能架构,主要包括如下功能模块:
1、租户管理
创建及管理租户基本信息并为租户分配计算资源和存储资源,为租户分配相应的权限模型。监控租户资源的使用情况包括当前cpu、内存资源的使用以及历史使用情况,存储资源的占用及空闲情况,租户下运行作业情况等。
2、权限管理
针对hive库表、hbase表、hdfs文件系统中的文件及目录操作、MR作业提交配置相应的权限模型,分配模型给对应的租户使其针对不同对象具有创建、修改、查询等不同权限。
3、资源管理
基于cpu 和内存为粒度设计资源池,为资源池配置独占资源量、共享资源量、抢占时间、资源权重等参数。监控整个平台各资源池的使用情况,动态调整资源配置以达到充分利用大数据平台能力。