MaxCompute资源包含存储资源和计算资源(CU)两种,存储资源用于存储表或资源(Resource),计算资源用于运行作业。为实现以最低的费用,满足业务对存储资源、计算资源的需求,企业必须要根据自身情况合理规划资源。本文为您介绍如何规划存储、计算资源,并选择合适的产品规格,仅供参考。
背景信息
存储资源规划及规格选型
MaxCompute存储都为按量付费存储,无需预购存储容量大小,按需存储。当存储较为稳定后,可从成本优化角度评估是否需要购买存储抵扣包。
计算资源规划及规格选型
计算资源规划频率
建议每半年评估一次计存比及存储容量,并调整计算资源数量。当您重新评估后发现需要变更规格或转换计费方式时,请参见升级和降配或转换计费方式。
说明计存比是计算资源和实际存储数据量(单位为TB)的比值,即
计存比=计算资源/实际存储数据量
。例如项目的计算资源为50 CU,实际存储数据量为10 TB,则计存比为50 CU/10 TB=5
。规格选型建议
如果您的项目处于开发测试阶段,推荐选择按量付费标准版。
如果您的项目已完成开发,正式进入上线阶段,推荐选择包年包月标准版,购买包年包月模式的计算资源。需要购买的计算资源数量需要根据按照计存比规划计算资源或按照项目实际消耗的计算资源数量规划计算资源进行预估。
计算资源规划依据
方式一:按照计存比规划计算资源
先预估数据存储量及计存比,然后再预估最低需要购买的计算资源数量。
在项目正式上线前或在项目正式上线运行一小段时间之后,评估计算资源消耗的CPU总和,然后再根据每天所有作业必须在哪个时间段运行完成,计算消耗费用最少的最佳计算资源数量。
计算资源计费方式
按照计存比规划计算资源
按照计存比规划计算资源的流程如下:
预估存储容量。
存储容量=当前数据存储量+每月预估数据增量×月数。
在项目上线之后就可以得到当前数据存储量。每月预估数据增量需要在项目上线两到三个月后,根据每月增量之和除以月数得到。如果还要考虑未来数据中台会承载更多业务、每月数据增量会变大等因素,可以将当前计算得到的每月预估数据增量值乘以倍数。
预估计存比。
按照项目开发测试阶段、以及上线运行一两个月的情况,预估计存比。
计存比一般规划为2~10,后续根据规划的计存比及预估存储容量购买计算资源:
如果项目每天运行的批量处理作业很多,且SQL程序计算复杂度高,计存比推荐规划为10。
如果项目每天运行的数据批量处理作业比较少,且SQL程序计算复杂度不高,计存比推荐规划为2。
如果项目每天运行的数据批量处理作业适中,SQL程序计算复杂度也适中,计存比可以规划为2~10之间的值。
预估计算资源数量。
根据预估的存储容量、计存比值预估计算资源数量。计算资源数量=预估存储容量×预估计存比。
说明按照计存比预估项目会消耗的计算资源数量时,存储容量、计存比都属于预估项,不够精准。因此,该方法要求项目的技术负责人需要拥有较多的项目实施经验,能够在每一步预估都尽可能保证准确。
按照项目实际消耗的计算资源数量规划计算资源
按照项目实际消耗的计算资源数量规划计算资源的流程如下:
查看项目的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。
规划计算资源数量。
计算账户下所有项目平均每天运行所有作业消耗的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总和。
基于计算得到的cost_cpu总和进行换算。
因为cost_cpu按照秒统计,对于实际项目评估过于精细,通常将cost_cpu除以100,然后再除以3600,得到
core×h
(CPU核数消耗量×小时)。这样方便评估实际项目在规定时间段内运行完所有作业需要的最少计算资源数量。假设该值为W。确认作业需要在每天的哪些时间段完成运行。
例如,客户要求在00:00:00~06:00:00间所有数据批量处理作业必须完成运行。即每天能够运行的总时长是6个小时。本文假设所有作业必须在N个小时内完成运行。
预估需要购买的计算资源最小值。
基于前两步得到的值(W和N)进行运算:W(CPU核数消耗量×小时)/N(作业运行时长N个小时),即可得到MaxCompute项目需要购买的计算资源数量的最小值。
计算W/N的前提是数据处理作业的cost_cpu很稳定,而且在这N个小时内,所有作业都随时在运行,不存在任何空闲的计算资源。但是,实际项目可能会因为某些原因导致作业运行时间延长(例如参与计算的数据量增加),相当于W会变大。同时,由于通过DataWorks或Dataphin运行调度作业还会产生很多延迟时间、作业获取计算资源也会耽误很多时间,这部分延迟时间会加大作业之间运行的时间间隔,真正用于运行作业的时间会小于N。W/N的分母实际变大、分子实际变小,进而变相地要求增加计算资源,以便让作业获取更多资源进而运行更加快速。因此,建议您在W/N结果基础上增加一倍。
购买计算资源后,您可以通过MaxCompute控制台的配额(Quota)管理设置配额组,进一步对计算资源进行合理规划,充分利用计算资源,详情请参见Quota管理(新版)。相关资源规划实践案例请参见包年包月资源分时配额、包年包月资源隔离或弹性预留CU最佳实践。