更新时间:2024-12-06 GMT+08:00

MRS多租户简介

多租户概述

  • 背景介绍:

    现代企业的数据集群在向集中化和云化方向发展,企业级大数据集群需要满足:

    • 不同用户在集群上运行不同类型的应用和作业(分析、查询、流处理等),同时存放不同类型和格式的数据。
    • 某些类型的用户(例如银行、政府单位等)对数据安全非常关注,很难容忍将自己的数据与其他用户的放在一起。

    这给大数据集群带来了以下挑战:

    • 合理地分配和调度资源,以支持多种应用和作业在集群上平稳运行。
    • 对不同的用户进行严格的访问控制,以保证数据和业务的安全。

    多租户将大数据集群的资源隔离成一个个资源集合,彼此互不干扰,用户通过“租用”需要的资源集合,来运行应用和作业,并存放数据。在大数据集群上可以存在多个资源集合来支持多个用户的不同需求。

    对此,MRS企业级大数据集群提供了完整的企业级大数据多租户解决方案。

  • MRS多租户介绍:

    MRS集群拥有的不同资源和服务支持多个组织、部门或应用共享使用。集群提供了一个逻辑实体来统一使用不同资源和服务,这个逻辑实体就是租户。当前仅分析集群支持租户。

    多个不同的租户统称多租户。多租户是MRS集群中的多个资源集合(每个资源集合是一个租户),具有分配和调度资源的能力。资源包括计算资源和存储资源。MRS集群提供多租户的功能,支持层级式的租户模型,支持动态添加和删除租户,实现资源的隔离,可以对租户的计算资源和存储资源进行动态配置和管理。

    计算资源指租户Yarn任务队列资源,可以修改任务队列的配额,并查看任务队列的使用状态和使用统计。

    存储资源目前支持HDFS存储,可以添加删除租户HDFS存储目录,设置目录的文件数量配额和存储空间配额。

    租户可以在界面上根据业务需要,在集群中创建租户、管理租户。

    • 创建租户时将自动创建租户对应的角色、计算资源和存储资源。默认情况下,新的计算资源和存储资源的全部权限将分配给租户的角色。
    • 默认情况下,查看当前租户的资源,在当前租户中添加子租户并管理子租户资源的权限将分配给租户的角色。
    • 修改租户的计算资源或存储资源,对应的角色关联权限将自动更新。

    MRS中最多支持512个租户。系统默认创建的租户包含“default”。和默认租户同处于最上层的租户,可以统称为一级租户。

  • 资源池介绍:

    Yarn任务队列支持一种调度策略,称为标签调度(Label Based Scheduling)。通过此策略,Yarn任务队列可以关联带有特定节点标签(Node Label)的NodeManager,使Yarn任务在指定的节点运行,实现任务的调度与使用特定硬件资源的需求。例如,需要使用大量内存的Yarn任务,可以通过标签关联具有大量内存的节点上运行,避免性能不足影响业务。

    在MRS集群中,租户从逻辑上对Yarn集群的节点进行分区,使多个NodeManager形成一个资源池。Yarn任务队列通过配置队列容量策略,与指定的资源池进行关联,可以更有效地使用资源池中的资源,且互不影响。

    MRS中最多支持50个资源池。系统默认包含一个“default”资源池。

  • 多租户优势介绍:
    • 合理配置和隔离资源

      租户之间的资源是隔离的,一个租户对资源的使用不影响其他租户,保证了每个租户根据业务需求去配置相关的资源,可提高资源利用效率。

    • 测量和统计资源消费

      系统资源以租户为单位进行计划和分配,租户是系统资源的申请者和消费者,其资源消费能够被测量和统计。

    • 保证数据安全和访问安全

      多租户场景下,分开存放不同租户的数据,以保证数据安全;控制用户对租户资源的访问权限,以保证访问安全。

视频介绍

多租户相关模型

  • 多租户相关模型:

    多租户相关模型如下图所示。

    图1 多租户相关模型

    图1中涉及的概念如表1所示。

    表1 相关概念说明

    概念

    说明

    用户

    用户是拥有用户名,密码等账号信息的自然人,是大数据集群的使用者。

    图中有三个不同的用户:用户A、用户B和用户C。

    角色

    角色是承载一个或多个权限的载体。权限是限定在具体对象上的,例如对HDFS中的“/tenant”目录的访问权限,这里权限就限定在“/tenant”目录这个具体对象上。

    图中有四个不同的角色:角色“t1”、角色“t2”、角色“t3”和角色“Manager_tenant”

    • 角色“t1”、角色“t2”和角色“t3”为创建租户时,集群自动生成的角色,角色名和租户名相同,分别对应租户“t1”、租户“t2”和租户“t3”,不能单独使用。
    • 角色“Manager_tenant”为集群中本身存在的角色,不能单独使用。

    租户

    租户是从大数据集群中划分出的资源集合。多个不同的租户统称为多租户,租户内部进一步划分出的资源集合是子租户。

    图中有三个不同的租户:租户“t1”、租户“t2”和租户“t3”

    资源

    • 计算资源包括CPU和内存。

      租户的计算资源是从集群总计算资源中划分出的,租户之间不可以互占计算资源。

      图中:计算资源1、计算资源2和计算资源3分别是租户“t1”、租户“t2”和租户“t3”从集群中划分出的计算资源。

    • 存储资源包括磁盘或第三方存储系统。

      租户的存储资源是从集群总存储资源中划分出的,租户之间不可以互占存储资源。

      图中:存储资源1、存储资源2和存储资源3分别是租户“t1”、租户“t2”和租户“t3”从集群中划分出的存储资源。

    若用户想要使用租户资源或为租户添加/删除子租户,则需要同时绑定该租户对应的角色和角色“Manager_tenant”。在图1中,各用户绑定的角色如表2所示。

    表2 各用户绑定的角色

    用户

    绑定的角色

    权限

    用户A

    • 角色“t1”
    • 角色“t2”
    • 角色“Manager_tenant”
    • 使用租户“t1”和租户“t2”的资源。
    • 为租户“t1”和租户“t2”添加/删除子租户。

    用户B

    • 角色“t3”
    • 角色“Manager_tenant”
    • 使用租户“t3”的资源。
    • 为租户“t3”添加/删除子租户。

    用户C

    • 角色“t1”
    • 角色“Manager_tenant”
    • 使用租户“t1”的资源。
    • 为租户“t1”添加/删除子租户。

    用户和角色是多对多的关系,一个用户可以绑定多个角色,一个角色可以被多个用户绑定。用户通过绑定角色和租户建立关系,因此用户和租户也是多对多的关系。一个用户可以使用多个租户的资源,多个用户也可以使用同一个租户的资源,例如图1中,用户A使用租户“t1”和租户“t2”的资源,用户A和用户C都使用租户“t1”的资源。

    “父租户”、“子租户”、“一级租户”、“二级租户”的概念是针对客户的多租户业务场景设定的,注意与FusionInsight Manager上的“叶子租户资源”和“非叶子租户资源”的概念区别。

    • 一级租户:按照租户所在层级确定名称,如最初创建的租户为一级租户,一级租户的子租户为二级租户。
    • 父租户与子租户:用来表述租户间上下层级关系的称呼。
    • 非叶子租户资源:创建租户时,选择的租户类型,该类型可以创建子租户。
    • 叶子租户资源:创建租户时,选择的租户类型,该类型不可以创建子租户。
  • 多租户平台

    租户是MRS大数据平台的核心概念,使传统的以用户为核心的大数据平台向以多租户为核心的大数据平台转变,更好的适应现代企业多租户应用环境,如图2所示。

    图2 以用户为核心的平台和以多租户为核心的平台

    对于以用户为核心的大数据平台,用户直接访问并使用全部的资源和服务。

    • 用户的应用可能只用到集群的部分资源,资源利用效率低。
    • 不同用户的数据可能存放在一起,难以保证数据安全。

    对于以租户为核心的大数据平台,用户通过访问租户来使用需要的资源和服务。

    • 按照应用需求分配和调度出需要的资源,以租户来统一使用,资源利用效率高。
    • 用户通过分配不同的角色获得使用不同租户资源的权限,以保障访问安全。
    • 不同的租户之间数据隔离,以保证数据安全。

多租户资源概述

MRS集群的资源分为计算资源和存储资源。多租户可实现资源的隔离。

  • 计算资源

    计算资源包括CPU和内存。租户之间不可以相互占用计算资源,私有计算资源独立。

    计算资源可分为静态服务资源和动态资源:

    大数据集群为Yarn分配的资源是静态服务资源,可以由Yarn动态分配给任务队列计算使用。

    • 静态服务资源

      静态服务资源是集群分配给各个服务的计算资源,每个服务的计算资源总量固定,不与其他服务共享,是静态的。这些服务包括Flume、HBase、HDFS和Yarn。

    • 动态资源

      Yarn是大数据集群中的分布式资源管理服务,大数据集群为Yarn分配资源,资源总量可配置。Yarn内部为任务队列进一步分配和调度计算资源。对于MapReduce、Spark、Flink和Hive的任务队列,计算资源完全由Yarn来分配和调度。

      Yarn任务队列是计算资源分配的基本单位。

      对于租户,通过Yarn任务队列申请到的资源是动态资源。用户可以动态创建并修改任务队列的配额,可以查看任务队列的使用状态和使用统计。

      • 资源池:

        现代企业IT经常会面对纷繁复杂的集群环境和上层需求。例如以下业务场景:

        • 集群异构,集群中各个节点的计算速度、存储容量和网络性能存在差异,需要把复杂应用的所有任务按照需求,合理地分配到各个计算节点上。
        • 计算分离,多个部门需要数据共享,但是需要把计算完全分离在不同的计算节点上。

        这就要求对计算资源的节点进一步分区。

        资源池用来指定动态资源的配置。Yarn任务队列和资源池关联,可实现资源的分配和调度。

        一个租户只能设置一个默认资源池。用户通过绑定租户相关的角色,来使用该租户资源池的资源。若需要使用多个资源池的资源,可通过绑定多个租户相关的角色实现。

      • 动态资源调度机制:

        Yarn动态资源支持标签调度(Label Based Scheduling)策略,此策略通过为计算节点(Yarn NodeManager)创建标签(Label),将具有相同标签的计算节点添加到同一个资源池中,Yarn根据任务队列对资源的需求,将任务队列和有相应标签的资源池动态关联。

        例如,集群中有40个以上的节点,根据各节点的硬件和网络配置,分别用Normal、HighCPU、HighMEM、HighIO为四类节点创建标签,添加到四个资源池中,资源池中的各节点性能如表3所示。

        表3 不同资源池中的各节点性能

        标签名

        节点数

        硬件和网络配置

        添加到

        关联

        Normal

        10

        一般

        资源池A

        普通的任务队列

        HighCPU

        10

        高性能CPU

        资源池B

        计算密集型的任务队列

        HighMEM

        10

        大量内存

        资源池C

        内存密集型的任务队列

        HighIO

        10

        高性能网络

        资源池D

        IO密集型的任务队列

        任务队列只能使用所关联的资源池里的计算节点。

        • 普通的任务队列关联资源池A,使用硬件和网络配置一般的Normal节点。
        • 计算密集型的任务队列关联资源池B,使用具有高性能CPU的HighCPU节点。
        • 内存密集型的任务队列关联资源池C,使用具有大量内存的HighMEM节点。
        • IO密集型的任务队列关联资源池D,使用具有高性能网络的HighIO节点。

        Yarn任务队列与特定的资源池关联,可以更有效地使用资源,保证节点性能充足且互不影响。

        FusionInsight Manager中最多支持添加50个资源池。系统默认包含一个默认资源池。

  • 存储资源

    存储资源包括磁盘或第三方存储系统。租户之间不可以相互访问数据,私有存储资源独立。

    HDFS是大数据集群中的分布式文件存储服务,存放大数据集群上层应用的所有用户数据,例如写入HBase表或Hive表的数据。

    目录是HDFS存储资源分配的基本单位。HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,在目录中创建、删除、移动或重命名文件。租户通过指定HDFS文件系统的目录来获取存储资源。

    存储资源调度机制如下:

    • 系统支持将HDFS目录存储到指定标签的节点上,或存储到指定硬件类型的磁盘上。例如以下业务场景:
      • 实时查询与数据分析共集群时,实时查询只需部署在部分节点上,其数据也应尽可能的只存储在这些节点上。
      • 关键数据根据实际业务需要保存在具有高度可靠性的节点中。
    • 管理员可以根据实际业务需要,通过数据特征灵活配置HDFS数据存储策略,将数据保存在指定的节点上。
    • 对于租户,存储资源是各租户所占用的HDFS资源。可以通过将指定目录的数据存储到租户配置的存储路径中,实现存储资源调度,保证租户间的数据隔离。
    • 用户可以添加/删除租户HDFS存储目录,设置目录的文件数量配额和存储空间配额来管理存储资源。

调度器介绍

多租户根据调度器类型分为开源的Capacity调度器和增强型Superior调度器,MRS集群默认即启用了Superior调度器。

  • Capacity调度器为开源的容量调节器。
  • Superior调度器为增强型,Superior取名源自苏必利尔湖,意指由该调度器管理的数据足够大。

调度器类型可通过Yarn服务的“yarn.resourcemanager.scheduler.class”参数值查询。调度器类型切换参考切换MRS租户资源调度器

为满足企业需求,克服Yarn社区在调度上遇到的挑战与困难,Superior调度器不仅集合了当前Capacity调度器与Fair调度器的优点,还做了以下增强:

  • 增强资源共享策略

    Superior调度器支持队列层级,在同集群集成开源调度器的特性,并基于可配置策略进一步共享资源。针对实例,管理员可通过Superior调度器为队列同时配置绝对值或百分比的资源策略计划。Superior调度器的资源共享策略将Yarn的标签调度增强为资源池特性,Yarn集群中的节点可根据容量或业务类型不同,进行分组以使队列更有效地利用资源。

  • 基于租户的资源预留策略

    部分租户可能在某些时间中运行关键任务,租户所需的资源应保证可用。Superior调度器构建了支持资源预留策略的机制,在这些租户队列运行的任务可立即获取到预留资源,以保证计划的关键任务可正常执行。

  • 租户和资源池的用户公平共享

    Superior调度器提供了队列内用户间共享资源的配置能力。每个租户中可能存在不同权重的用户,高权重用户可能需要更多共享资源。

  • 大集群环境下的调度性能优势

    Superior调度器接收到各个NodeManager上报的心跳信息,并将资源信息保存在内存中,使得调度器能够全局掌控集群的资源使用情况。Superior调度器采用了push调度模型,令调度更加精确、高效,大大提高了大集群下的资源使用率。另外,Superior调度器在NodeManager心跳间隔较大的情况下,调度性能依然优异,不牺牲调度性能,也能避免大集群环境下的“心跳风暴”。

  • 优先策略

    当某个服务在获取所有可用资源后还无法满足最小资源的要求,则会发生优先抢占。抢占功能默认关闭。

多租户管理页面概述

  • 统一的多租户管理:

    登录MRS管理控制台或Manager页面,选择“租户资源”,可以查看到MRS作为统一的多租户管理平台,集成了租户生命周期管理、租户资源配置、租户服务关联和租户资源使用统计等功能,为企业提供了成熟的多租户管理模型,实现集中式的租户和业务管理。

    • 图形化的操作界面:MRS实现全图形化的多租户管理界面,通过树形结构实现多级租户的管理和操作,将当前租户的基本信息和资源配额集成在一个界面中,方便运维和管理,如图3所示。
      图3 多租户管理(以3.x版本Manager页面为例)
    • 层级式的租户管理:MRS支持层级式的租户管理,可以为租户进一步添加子租户,实现资源的再次配置。一级租户下一级的子租户属于二级租户,以此类推。为企业提供了成熟的多租户管理模型,实现集中式的租户和业务管理。
  • 简化的权限管理:

    MRS对普通用户封闭了租户内部的权限管理细节,对管理员简化了权限管理的操作方法,提升了租户权限管理的易用性和用户体验。

    • 使用RBAC方式,在多租户管理时,可根据业务场景为各用户分别配置不同权限。
    • 租户的管理员,具有租户的管理权限,包括:查看当前租户的资源和服务、在当前租户中添加/删除子租户并管理子租户资源的权限。支持定义单个租户的管理员,可以将租户的管理权限委托给系统管理员之外的其他用户。
    • 租户对应的角色,具有租户的计算资源和存储资源的全部权限。创建租户时,系统自动创建租户对应的角色,可以添加用户并绑定该角色为其他用户授权,以使用该租户的资源。
  • 清晰的资源管理
    • 资源自主配置

      MRS支持在创建租户时配置计算资源和存储资源,和进一步添加、修改、删除租户内资源。

      修改租户的计算资源或存储资源,当前租户对应的角色所关联的权限将自动更新。

    • 资源使用统计

      资源使用统计是管理员获取当前集群应用和服务的运行状态,提高集群运维效率,做出运维决策的重要依据。MRS通过“资源配额”展示租户的资源统计,包括租户动态计算资源vCores和Memory,HDFS存储资源(Space)的使用统计。

      • Capacity调度器和Superior调度器可用资源计算方式分别如下:
        • Capacity

          Yarn可用资源(Memory、CPU) = 资源容量(%) * 资源池总容量

          若队列跨多个资源池,则该队列可用资源为每个资源池为其分配的可用资源总和。

        • Superior

          Yarn可用资源(Memory、CPU)为资源池容量按照队列权重按比例分配。

      • 当租户管理员绑定一个租户角色时,租户管理员将拥有该租户的管理权限,以及该租户全部资源的权限。
    • 资源图形化监控

      资源图形化监控支持表4中监控项图形化显示,如图4所示。

      图4 精细化监控(以3.x版本Manager页面为例)

      默认显示实时的监控数据,用户可单击自定义时间区间,单击,在弹出菜单中选择“导出”,导出对应的监控项信息。

      表4 监控项

      所属服务

      监控指标项

      说明

      HDFS

      HDFS租户空间信息

      • 分配的空间大小
      • 已使用的空间大小

      HDFS可选择指定的存储目录进行监控。存储目录与当前租户在“资源”中添加的目录一致。

      HDFS租户文件对象信息

      • 已使用的文件对象个数

      Yarn

      Yarn当前已分配的CPU核数

      • AM分配的最大CPU核数
      • 已分配的CPU核数
      • AM已使用的CPU核数

      当前租户的监控信息。如某租户未配置相应子项,则不显示。

      监控数据取自Yarn原生WebUI中“Scheduler > Application Queues > Queue:租户名 ”。

      Yarn当前已分配的内存

      • AM分配的最大内存
      • 已分配的内存
      • AM已使用的内存