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


3.2 按照计存比方法预估计算资源
第一步:评估存储容量按照3年项目周期计算:存储容量 = 当前数据存量 + 每月预估数据增量*月数 。 当前数据存量很容易得到 , 在数据上云完成之后就可以得到当前数据存量 。 每月预估数据增量需要在数据上云之后两三个月 , 根据增量总值除以月数 , 得到每月预估增量平均值 。 当然 , 如果还要考虑未来数据中台承载更多业务、每月数据增量会变大等因素 , 可以将当前计算得到的每月预估数据增量值乘以倍数 。 建议每半年预估一次存储总容量 , 然后每半年调整一次计算资源CU量 。
第二步:预估计存比按照项目开发测试阶段、以及上线运行一两个月的情况 , 可以大概预估计存比 。 根据实际情况 , 计存比一般配置2-10 。 如果客户每天运行的数据批量处理任务很多 , 且sql程序计算复杂度高,计存比可以选择10;如果客户每天运行的数据批量处理任务比较少 , 且sql程序计算复杂度不高 , 计算比可以选择2;如果客户每天运行的数据批量处理任务适中 , sql程序计算复杂度也适中 , 计存比可以选择2-10之间的合适值 。
建议每半年评估一次计存比 , 然后每半年调整一次计算资源CU量 。
第三步:预估计算资源CU量按照第一步预估的每半年存储资源总量 , 结合每半年评估的计存比值 , 存储资源总量 *计存比 = 计算资源CU总量 。预估得到计算资源CU总量 , 进而每半年利用该企业主账号调整一次MaxCompute计算资源CU总量 。
按照计存比预估企业项目需要消耗的计算资源CU总量 , 有很多需要预估的变量 , 包括数据存储总量、计存比 , 很可能预估不准确 。 因此 , 该方法要求项目的技术负责人拥有较多的项目实施经验 , 能够在每一步预估都尽可能准确 。
3.3 按照项目实际消耗CU量进行资源划分
选择在项目正式上线前、或者在项目正式上线运行一小段时间之后 , 评估计算资源CU消耗的CPU总时长 , 然后再根据不同任务单独消耗的CPU时长、任务的优先级、企业客户要求每天所有任务必须在哪个时间段运行完成 , 综合考虑这几个因素 , 最后得到计算资源消耗费用最少的最佳CU数量 。
3.3.1 查看计算资源消耗情况
在进行资源规划之前 , 需要首先搞清楚过去一段时间MaxCompute计算资源的消耗情况 。
详细介绍如何开通和查看MaxCompute的information_schema信息 。 MaxCompute元数据表有很多 , 本文只需要利用到一张表:TASKS_HISTORY 。 这张元数据表记录了所有MaxCompute 计算任务的资源消耗情况 。 详细介绍元数据表TASKS_HISTORY的字段信息 , 其中最重要的字段信息是:cost_cpu 和 cost_mem , 分别表示:
浅谈 MaxCompute 资源规划管理及评估文章插图
本文主要借助CPU消耗量(也就是上图的cost_cpu字段对应的每个任务消耗的cpu数量)进行计算资源CU数量的规划 。 需要注意的是 , cost_cpu字段的含义:MaxCompute计算任务作业的CPU消耗量 。 100表示1 core*s , 比如官网的例子:10 core运行5s , cost_cpu为10*100*5=5000) 。 那么cost_cpu字段表示的是“cpu核数消耗量 *100 *任务运行时间秒” 。 因为cost_cpu按照秒统计 , 对于实际项目评估太过于精细 , 我们通常将cost_cpu 除以 100、然后再除以3600 , 得到cores *h (cpu核数 *小时) 。 这样方便评估实际项目在规定时间段内运行完所有任务需要quota group资源组的最少计算资源CU数量 。
如下如所示某个MaxCompute project 的MaxCompute计算任务的资源消耗情况:
浅谈 MaxCompute 资源规划管理及评估文章插图
3.3.2 规划计算资源CU数量
通过3.3.1章节的内容 , 我们可以查看到MaxCompute project某一天运行的所有计算任务消耗的CPU核数*小时 。