MaxCompute资源包含存储资源和计算资源(CU)两种,存储资源用于存储表或资源(Resource),计算资源用于运行作业。为实现以最低的费用,满足业务对存储资源、计算资源的需求,企业必须要根据自身情况合理规划资源。本文为您介绍如何规划存储、计算资源,并选择合适的产品规格,仅供参考。

背景信息

最佳资源规划方案可以达到如下目的:
  • 存储资源

    资源充足,既能够存储当前的所有存量数据,也能够存储未来一段时间的增量数据。

  • 计算资源
    • 资源充足,且无浪费,能够满足所有计算作业的资源需求。
    • 不同优先级的作业可以互不干扰,优先保证高优先级的作业获取到足够的计算资源。
    • 当某些作业需要处理庞大的数据量且耗费计算资源较多时,可以同时确保其他作业能获取到计算资源且不会阻塞运行。
    • 能够满足不同时段的差异化资源需求,根据不同项目的资源使用情况按照时段划分资源,提高资源利用率。

存储资源规划及规格选型

  • 存储资源规划频率

    建议每半年评估一次计存比、存储容量。当您重新评估后发现需要变更规格或转换计费方式时,请参见升级和降配转换计费方式

  • 规格选型建议
    基于MaxCompute的产品规格情况,推荐您按照如下情形选择规格:
    • 当预估企业未来一段时间内的数据存储量较大(100 TB以上),计算作业少(计存比小于1.5)时,推荐选择包年包月套餐版
    • 当预估企业未来一段时间内的数据存储量很小(500 GB以下),计算作业仅涉及SQL、PyODPS类型时,推荐选择按量计费开发者版
    • 其他情况下,企业可以使用灵活的存储资源:
      说明 更多预估计算资源信息,请参见计算资源规划及规格选型
  • 存储资源规划依据

    您可以根据计存比、存储容量选择产品规格。计存比即计算资源和实际存储量(单位为TB)的比值。例如某个项目的计算资源为50 CU,实际存储量为10 TB,则计存比为5。

    MaxCompute各规格的计存比情况如下:
    • 包年包月套餐版:计存比是固定的,计存比为1左右。
    • 包年包月标准版:计存比不固定。存储资源池为共享型,按需存储。
    • 按量计费标准版:计存比不固定,存储资源池为共享型,按需存储。
    • 按量计费开发者版:计存比不固定。存储容量限制为500 GB。
  • 存储资源计费方式
    对于存储资源,MaxCompute提供两种计费方式:
    • 按量计费:该计费方式适用于灵活存储项目。存储资源使用灵活,仅根据存储量计算费用。计算资源不受存储限制,可单独进行规划。
    • 包年包月套餐:该计费方式适用于存储量大、计算作业较少的项目。同时包年包月套餐的计算资源数量是固定的,无法应对计算资源需求量猛增的情况。例如日常的数据批量处理作业可以正常运行,但在大型活动期间的数据批量处理作业会出现严重阻塞。

计算资源规划及规格选型

  • 计算资源规划频率

    建议每半年评估一次计存比及存储容量,并调整计算资源数量。当您重新评估后发现需要变更规格或转换计费方式时,请参见升级和降配转换计费方式

  • 规格选型建议
  • 计算资源规划依据
  • 计算资源计费方式
    对于计算资源,MaxCompute提供两种计费方式:
    • 按量计费:该计费方式适用于处于测试阶段的项目。该阶段消耗的计算资源数量不多,采用按量计费方式成本更低。
    • 包年包月:该计费方式适用于已完成开发进入上线阶段的项目,包年包月模式下购买的预留计算资源数量是固定的,不会在公共资源池抢占计算资源,能保障作业的顺利运行。同时有预留和非预留计算资源时,会优先使用预留计算资源。

按照计存比规划计算资源

按照计存比规划计算资源的流程如下:
  1. 预估存储容量。

    存储容量=当前数据存储量+每月预估数据增量×月数。

    在项目上线之后就可以得到当前数据存储量。每月预估数据增量需要在项目上线两到三个月后,根据每月增量之和除以月数得到。如果还要考虑未来数据中台会承载更多业务、每月数据增量会变大等因素,可以将当前计算得到的每月预估数据增量值乘以倍数。

  2. 预估计存比。

    按照项目开发测试阶段、以及上线运行一两个月的情况,预估计存比。

    计存比一般规划为2~10,后续根据规划的计存比及预估存储容量购买计算资源:
    • 如果项目每天运行的批量处理作业很多,且SQL程序计算复杂度高,计存比推荐规划为10。
    • 如果项目每天运行的数据批量处理作业比较少,且SQL程序计算复杂度不高,计存比推荐规划为2。
    • 如果项目每天运行的数据批量处理作业适中,SQL程序计算复杂度也适中,计存比可以规划为2~10之间的值。
  3. 预估计算资源数量。
    根据预估的存储容量、计存比值预估计算资源数量。计算资源数量=预估存储容量×预估计存比。
    说明 按照计存比预估项目会消耗的计算资源数量时,存储容量、计存比都属于预估项,不够精准。因此,该方法要求项目的技术负责人需要拥有较多的项目实施经验,能够在每一步预估都尽可能保证准确。

按照项目实际消耗的计算资源数量规划计算资源

按照项目实际消耗的计算资源数量规划计算资源的流程如下:
  1. 查看项目的CPU消耗量。
    Information Schema提供的TASKS_HISTORY视图记录了MaxCompute项目中所有计算作业消耗的计算资源情况。您可以通过MaxCompute客户端查询TASKS_HISTORY视图中的cost_cpu字段,基于该字段进一步计算消耗的资源数量。查询TASKS_HISTORY视图的命令示例如下:
    select * from information_schema.tasks_history where ...;

    cost_cpu代表MaxCompute计算作业的CPU消耗量。例如10 core运行5s,cost_cpu为10(CPU核数消耗量)×100(1 core×s)×5(任务运行时间,单位为秒)=5000。

  2. 规划计算资源数量。
    1. 计算账户下所有项目平均每天运行所有作业消耗的cost_cpu总和。

      假设某个MaxCompute项目平均每天会运行1000个作业,这些作业消耗的cost_cpu分别是W1~W1000。计算W1~W1000的和即可得到平均每天运行所有作业消耗的cost_cpu总和,假设总和为Wz。

      说明 通常,数据中台一般会划分如下6个MaxCompute项目:
      • ods_dev:贴源层开发测试项目
      • ods_prod:贴源层生产项目
      • cdm_dev:公共层开发测试项目
      • cdm_prod:公共层生产项目
      • ads_dev:应用层开发测试项目
      • ads_prod:应用层生产项目

      该情况下,您需要计算上述6个项目的所有计算作业的cost_cpu总和。

    2. 基于计算得到的cost_cpu总和进行换算。

      因为cost_cpu按照秒统计,对于实际项目评估过于精细,通常将cost_cpu除以100、然后再除以3600,得到core×h(CPU核数消耗量×小时)。这样方便评估实际项目在规定时间段内运行完所有作业需要的最少计算资源数量。假设该值为W。

    3. 确认作业需要在每天的哪些时间段完成运行。

      例如,客户要求在00:00:00~06:00:00间所有数据批量处理作业必须完成运行。即每天能够运行的总时长是6个小时。本文假设所有作业必须在N个小时内完成运行。

    4. 预估需要购买的计算资源最小值。

      基于前两步得到的值(W和N)进行运算:W(CPU核数消耗量×小时)/N(作业运行时长N个小时),即可得到MaxCompute项目需要购买的计算资源数量的最小值。

      计算W/N的前提是数据处理作业的cost_cpu很稳定,而且在这N个小时内,所有作业都随时在运行,不存在任何空闲的计算资源。但是,实际项目可能会因为某些原因导致作业运行时间延长(例如参与计算的数据量增加),相当于W会变大。同时,由于通过DataWorks或Dataphin运行调度作业还会产生很多延迟时间、作业获取计算资源也会耽误很多时间,这部分延迟时间会加大作业之间运行的时间间隔,真正用于运行作业的时间会小于N。W/N的分母实际变大、分子实际变小,进而变相地要求增加计算资源,以便让作业获取更多资源进而运行更加快速。因此,建议您在W/N结果基础上增加一倍。

购买计算资源后,您可以通过MaxCompute管家设置配额组,进一步对计算资源进行合理规划,充分利用计算资源。相关资源规划实践案例,请参见包年包月资源分时配额包年包月资源隔离

参考文档

如需了解更多延伸信息,请参见资源规划管理及评估