浅谈 MaxCompute 资源规划管理及评估( 三 )


计算资源CU数量规划的细则:
Step1:首先 , 计算得到平均每天运行所有任务消耗的cost_cpu总和(需要除以100 , 才能得到真正的cpu核数 *秒 , 然后再除以 3600 , 得到消耗的 “cpu核数 *小时”) 。 举个例子:MaxCompute project平均每天需要运行1000个任务 , 这些任务消耗的cost_cpu分别是 W1、W2 …… W1000 。 那么需要将W1 + W2+ …… + W1000 得到每天运行所有任务消耗的cost_cpu总和Wz 。
注意:数据中台一般会划分6个MaxCompute project , 分别是:

  • ods_dev:贴源层开发测试project;
  • ods_prod:贴源层生产project;
  • cdm_dev:公共层开发测试project;
  • cdm_prod:公共层生产project;
  • ads_dev:应用层开发测试project;
  • ads_prod:应用层生产project;
需要将这6个MaxCompute project的所有数据计算任务的cost_cpu相加得到cost_cpu总和Wz 。 当然 , 大部分读者使用MaxCompute进行数据处理 , 并非需要建设数据中台 。 任何需要使用MaxCompute进行数据处理的应用场景 , 都可以按照实际划分的MaxCompute project , 将这些MaxCompute project涵盖的所有数据处理任务消耗的cost_cpu相加得到总和Wz 。
Step2:按照上述介绍的阿里云官网详情介绍 , cost_cpu需要除以100才是真正消耗的CPU核数 。 同时 , cost_cpu按照秒进行度量 , 我们一般会按照小时进行度量 。 因此 , 需要将cost_cpu总和Wz除以100、再除以3600 , 最后得到平均每天运行所有任务消耗 “cpu核数 *小时” , 本文假设这个值为W 。
Step3:咨询客户数据批量处理任务需要在每天的哪些时间段运行完成 。 举个例子:客户要求在深夜零点之后、凌晨6点之前必须将所有数据批量处理任务运行完成 。 那么每天能够运行的总时长都是6个小时 。 本文假设所有任务必须在N个小时运行完成 。
Step4:利用上述得到的每天所有任务[cpu核数 *小时 / 任务运行时长N个小时] , 就可以得到该客户的MaxCompute project需要分配的计算资源CU数量的最小值:W/N 。
W/N的前提是数据处理任务的cost_cpu很稳定 , 而且在这N个小时内 , 所有任务都随时在运行 , 不存在任何空闲的时间 。 但是 , 实际项目可能会因为某些原因导致数据计算任务运行时间延长(比如参与计算的数据量增加) , 相当于W会变大;同时 , 由于DataWorks/Dataphin调度任务还会产生很多延迟时间、任务获取CU资源也会耽误很多时间 , 这部分延迟时间会加大任务之间运行的时间间隔 , 真正用于运行任务的时间会小于N 。
W/N的分母实际变大、分子实际变小 , 进而变相地要求增加计算资源 , 以便让任务获取更多资源进而运行地更加快速 。 因此一般情况下 , 会在上述得到的W/N结果基础上增加一倍 。 按照上述4个步骤 , 可以预估计算得到企业可以需要购买的CU数量 。
3.3.3 举例规划计算资源CU数量
某企业实施数据中台项目 , 划分8个MaxCompute project 。 除了3.3.2章节介绍的6个MaxCompute project之外 , 还单独规划了两个专门做数据清洗的MaxCompute project 。 当然 , 正如前文所述 , 读者需要按照实际规划的若干个MaxCompute project进行计算 。
Step1 和 Step2:按照3.3.1章节介绍的方法统计过去15天 , 平均每天8个MaxCompute project消耗的“cpu核数 *小时”的总量为:202 CPU核数 *小时 。
Step3:因为客户的业务系统空闲时间在晚上1点到早上6点 , 而且每天早上7点之前需要出每天数据批量任务的运行结果 。 在6点到7点之间 , 主要产出报表 , 因此只有5个小时可以运行批量任务 。