MaxCompute元数据使用实践--作业统计

简介: 通过MaxCompute租户级别Information Schema的“TASKS_HISTORY”视图可以统计查看MaxCompute计算作业的元数据信息,方便您进行作业审计以及各类统计,指导作业性能、成本优化。

MaxCompute的租户级别Information Schema从租户角度提供项目元数据及使用历史数据等信息,您可以一次性拉取您同一个元数据中心下所有Project的某类元数据,从而进行各类元数据的统计分析。我们在此推出系列元数据使用实践文章。

本文主要介绍通过元数据的“TASKS_HISTORY”视图进行作业的相关统计。

在此之前,您如果没还使用过租户级别Information Schema,需要您先详细阅读下租户级别Information Schema文档的背景信息、功能介绍、费用介绍、费用介绍、使用限制和注意事项,避免您在使用过程中遇到不必要的问题

统计分析作业CU时消耗

场景

当前使用MaxCompute的是按量付费,想评估下是否适合转成包年包月,适合的话需要购买多少包年包月CU合适。

解决方案:

这个场景主要是出于节约成本角度出发,那么考虑到MaxCompute的按量计费模式下,SQL作业的计费方式不是按CU计费,因此我们无法直接按最终的费用来换算,可以通过租户级别的SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY视图统计过去作业的CU消耗分布进行参考评估。

思路如下:

1)统计最近1个月(元数据默认只有最近15日的数据,若必须,需要您提前每日自行转存到其他普通project中)所有需要转预付的Project每日cost_cpu消耗总和。SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY中cost_cpu原始单位为core.s,需转换成CU.时(cost_cpu/100/3600)。找出正常消费中最高消费的那一天。

2)对正常消费最高的那一天按小时分别统计所有任务CU时消耗。

3)按业务划分时间段,取最高时间段进行分析。如业务是0-7点为业务高峰期划分为“ETL夜间高峰段”,其他的使用都很低则为一个时间段。

4)汇总高峰期时间段CU时总量/时间,得出该时间段内需要的CU量。如:0-7点这8个小时,CU时为800,则需要100CU跑8个小时才能跑完800CU时的计算量。当然这个是最理想的状态,任务不都是很平均,所以需要根据情况设置一定的冗余。另外还有比较极端的情况, 比如有些任务有依赖关系到5点的时候才需要超大量的CU量,但是这个时候用100CU来跑即使跑3个小时也跑不完,所以这种情况就要结合业务需求,如果这个实在不能延迟时间,要么加大CU量,要么这个Project不适合用包年包月资源。

5)建议不要一次性转所有Project,逐步转,每转一个Project需要通过MaxCompute管家监控资源使用情况,看情况进行扩容/缩容。

相关代码如下:

SET odps.namespace.schema = true; --若您当前租户已经开启租户级别的schema语法开关,则无需执行这个flag。
SELECT  task_catalog
        ,SUBSTR(end_time,1,13) end_time
        ,SUM(cost_cpu / 100 / 3600) cuh
FROM    SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY
WHERE   ds <= xxx --输入您需要统计的时间,最大只有最近15天数据。注意如果跑当天的数据会有比较大的计算消耗,使用后付费计算资源时需慎重。
GROUP BY task_catalog
         ,SUBSTR(end_time,1,13)
;

如果您通过MaxCompute控制台的 SQL分析执行,可以直接对结果进行简单分析如下:

image.png

从上图来看,CU时消耗分布不均匀,每日就只有一个小时是消耗非常高,从这单看不和适合所有项目都使用包年包月CU,但可以按项目分析,评估部分项目数据。

统计每个作业消费

如果您使用MaxCompute的是按量付费,有费用核对审计需求、或基于但作业费用优化需求,您可以通过SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY视图统计相关的费用,此处为你推荐“人力家”用户如何通过这个数据合理治理费用的展示案例:

【深入MaxCompute】人力家:借助Information Schema合理治理费用

常用的统计分析

统计作业量

统计各个项目每日个类型作业量趋势:

SET odps.namespace.schema = true; --若您当前租户已经开启租户级别的schema语法开关,则无需执行这个flag。
SELECT  ds
        ,task_catalog
        ,task_type
        ,COUNT(inst_id) inst_id_cnt
FROM    SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY
WHERE   ds <= xxx --输入您需要统计的时间,最大只有最近15天数据。注意如果跑当天的数据会有比较大的计算消耗,使用后付费计算资源时需慎重。
GROUP BY ds
         ,task_catalog
         ,task_type
;

作业类型取值如下:

  • SQL:SQL作业
  • CUPID:Spark或Mars作业
  • SQLCost:SQL预估作业
  • SQLRT:查询加速SQL作业
  • LOT:MapReduce作业
  • PS:PAI的Parameter Server
  • AlgoTask:机器学习作业

如果您通过MaxCompute控制台的 SQL分析执行,可以直接对结果进行简单分析如下:

image.png

查看某个表数据是被谁查看

查看某个表数据是被谁查看或写入

SET odps.namespace.schema = true; --若您当前租户已经开启租户级别的schema语法开关,则无需执行这个flag。
SELECT  task_catalog
        ,task_type
        ,inst_id
        ,owner_name
        ,start_time
        ,end_time
        ,input_tables
        ,output_tables
        ,operation_text
        ,ext_platform_id
        ,ext_node_id
        ,ext_node_onduty
FROM    SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY
WHERE   ds =xxxx   --输入您需要查看的时间,只有最近15天数据。注意如果跑当天的数据会有比较大的计算消耗,使用后付费计算资源时需慎重。
AND input_tables LIKE 'dwd_github_events_odps'
;
  • task_catalog:作业所属项目。
  • owner_name:可以查看真正执行MaxCompute作业的owner名称。有些情况下可能某个业务都是一个账号,这样无法找到作业真正的开发者,如DataWorks生产项目会指定一个账号执行MaxCompute作业。
  • - operation_text:SQL内容。
  • ext_platform_id:作业是从上游哪个端发起的,需要上游发起作业的时候传入这个信息,目前DataWorks和Dataphin 部分作业有传入,其他没传入无法获取到。
  • ext_node_id:作业在上游端发起的具体名称
  • ext_node_onduty:上游端作业的负责人uid,您可以尝试用这个id和SYSTEM_CATALOG.INFORMATION_SCHEMA.USERS表关联获取user name。

小结

以上只是给出了常见的几个场景,实际上您还可以通过“SYSTEM_CATALOG.INFORMATION_SCHEMA.TASKS_HISTORY”这个视图数据统计查看更多信息以便解决您的业务场景。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
10天前
|
SQL 分布式计算 监控
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况。
【2月更文挑战第4天】MaxCompute提供了一些工具以帮助您监控作业和资源使用情况。
19 8
|
3月前
|
SQL 分布式计算 监控
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况
27 4
|
3月前
|
分布式计算 Hadoop 大数据
【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )
【云计算与大数据计算】Hadoop MapReduce实战之统计每个单词出现次数、单词平均长度、Grep(附源码 )
130 0
|
3月前
|
分布式计算 项目管理 MaxCompute
MaxCompute元数据使用实践--数据权限统计
本文主要介绍通过元数据的相关权限的视图进行数据权限的统计。
101440 2
|
3月前
|
存储 缓存 NoSQL
大数据 | HDFS 元数据持久化笔记
大数据 | HDFS 元数据持久化笔记
39 0
|
5月前
|
SQL 资源调度 大数据
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
|
5月前
|
SQL 资源调度 安全
开启 Kerberos 安全的大数据环境中,Yarn Container 启动失败导致作业失败
开启 Kerberos 安全的大数据环境中,Yarn Container 启动失败导致作业失败
|
5月前
|
SQL 分布式计算 资源调度
大数据问题排查系列-大数据集群开启 kerberos 认证后 HIVE 作业执行失败
大数据问题排查系列-大数据集群开启 kerberos 认证后 HIVE 作业执行失败
|
5月前
|
SQL 分布式计算 大数据
大数据问题排查系列 - TDH大数据平台中 HIVE作业长时间无法执行结束
大数据问题排查系列 - TDH大数据平台中 HIVE作业长时间无法执行结束
|
6月前
|
SQL 分布式计算 资源调度
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录

相关产品

  • 云原生大数据计算服务 MaxCompute