MaxCompute中如何通过logview诊断慢作业

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: MaxCompute致力于批量结构化数据的存储和计算,提供海量数据仓库的解决方案及分析建模服务,在MaxCompute执行sql任务的时候有时候作业会很慢,本文通过查看logview排查具体任务慢的原因

在这里把任务跑的慢的问题划分为以下几类

  1. 资源不足导致的排队(一般是包年包月项目)
  2. 数据倾斜,数据膨胀
  3. 用户自身逻辑导致的运行效率低下

一、资源不足

一般的SQL任务会占用CPU、Memory这两个维度的资源,logview如何查看参考链接

1.1 查看作业耗时和执行的阶段

image.png

1.2 提交任务的等待

如果提交任务以后一直显示“Job Queueing...”则有可能是由于其他人的任务占用了资源组的资源,使得自己的任务在排队。

在SubStatusHistory中看Waiting for scheduling就是等待的时间

image.png



1.3 任务提交后的资源不足

这里还有另一种情况,虽然任务可以提交成功,但是由于所需的资源较大,当前的资源组不能同时启动所有的实例,导致出现了任务虽然有进度,但是执行并不快的情况。这种可以通过logview中的latency chart功能观察到。latency chart可以在detail中点击相应的task看到

1527146448266-b70559b6-bdcb-4df7-9bdd-e33686a293e4.png


上图显示的是一个资源充足的任务运行状态,可以看到蓝色部分的下端都是平齐的,表示几乎在同一时间启动了所有的实例。

image.png

而这个图形的下端呈现阶梯向上的形态,表示任务的实例是一点一点的调度起来的,运行任务时资源并不充足。如果任务的重要性较高,可以考虑增加资源,或者调高任务的优先级。

1.4资源不足的原因

1.通过cu管家查看cu是否占满,点到对应的任务点,找到对应时间看作业提交的情况

  按cpu占比进行排序

(1)某个任务占用cu特别大,找到大任务看logview是什么原因造成(小文件过多、数据量确实需要这么多资源)。(2)cu占比均匀说明是同时提交多个大任务把cu资源直接打满,

2.由于小文件过多导致cu占慢

map阶段的并行度是根据输入文件的分片大小,从而间接控制每个Map阶段下Worker的数量。默认是256m。如果是小文件会当作一个块读取如下图map阶段m1每个task的i/o bytes都只有1m或者几十kb,所以造成2500多个并行度瞬间把资源打满,说明该表下文件过多需要合并小文件

image.png

合并小文件https://help.aliyun.com/knowledge_detail/150531.html?spm=a2c4g.11186623.6.1198.60ea4560Hr5H8d#section-5nj-hoa-d7f

3.数据量大导致资源占满

可以增加购买资源,如果是临时作业可以加set odps.task.quota.preference.tag=payasyougo;参数,可以让指定作业临时跑到按量付费大资源池,

1.5任务并行度如何调节

MaxCompute的并行度会根据输入的数据和任务复杂度自动推测执行,一般不需要调节,理想情况并行度越大速度处理越快但是对于包年包月资源组可能会把资源组占满,导致任务都在等待资源这种情况会导致任务变慢

map阶段并行度

odps.stage.mapper.split.size :修改每个Map Worker的输入数据量,即输入文件的分片大小,从而间接控制每个Map阶段下Worker的数量。单位MB,默认值为256 MB

reduce的并行度

odps.stage.reducer.num :修改每个Reduce阶段的Worker数量


odps.stage.num:修改MaxCompute指定任务下所有Worker的并发数,优先级低于odps.stage.mapper.split.sizeodps.stage.reducer.memodps.stage.joiner.num属性。

odps.stage.joiner.num:修改每个Join阶段的Worker数量。

二、数据倾斜

数据倾斜

【特征】task 中大多数 instance 都已经结束了,但是有某几个 instance 却迟迟不结束(长尾)。如下图中大多数(358个)instance 都结束了,但是还有 18 个的状态是 Running,这些 instance 运行的慢,可能是因为处理的数据多,也可能是这些instance 处理特定数据慢。


解决方法:https://help.aliyun.com/document_detail/102614.html?spm=a2c4g.11186623.6.1160.28c978569uyE9f

三、逻辑问题

这里指用户的SQL或者UDF逻辑低效,或者没有使用最优的参数设定。表现出来的现象时一个Task的运行时间很长,而且每个实例的运行时间也比较均匀。这里的情况更加多种多样,有些是确实逻辑复杂,有些则有较大的优化空间。

数据膨胀

【特征】task 的输出数据量比输入数据量大很多。

比如 1G 的数据经过处理,变成了 1T,在一个 instance 下处理 1T 的数据,运行效率肯定会大大降低。输入输出数据量体现在 Task 的 I/O Record 和 I/O Bytes 这两项:

解决方法:确认业务逻辑确实需要这样,增大对应阶段并行度


UDF执行效率低

【特征】某个 task 执行效率低,且该 task 中有用户自定义的扩展。甚至是 UDF 的执行超时报错:“Fuxi job failed - WorkerRestart errCode:252,errMsg:kInstanceMonitorTimeout, usually caused by bad udf performance”。


首先确定udf位置,点看慢的fuxi task, 可以看到operator graph 中是否包含udf,例如下图说明有java 的udf。


通过查看logview 中fuxi instance 的stdout 可以查看该operator 运行速度,正常情况 Speed(records/s) 在百万或者十万级别。

解决方法:检查udf逻辑尽量使用内置函数




大家如果对MaxCompute有更多咨询或者建议,欢迎扫码加入 MaxCompute开发者社区钉钉群,或点击链接 申请加入。


54144fbf8bbf4f9ba7ceb09b5065f18b.png

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
7月前
|
SQL 分布式计算 监控
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况。
【2月更文挑战第4天】MaxCompute提供了一些工具以帮助您监控作业和资源使用情况。
92 8
|
SQL 分布式计算 资源调度
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录
阿里云MaxCompute-Hive作业迁移语法兼容性踩坑记录
1292 0
|
2月前
|
消息中间件 分布式计算 大数据
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
152 0
|
2月前
|
消息中间件 分布式计算 大数据
大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot
147 0
|
6月前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用问题之如何确保上游作业完成后再运行下游作业
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
7月前
|
分布式计算 大数据 Hadoop
大数据编程期末大作业2023
大数据编程期末大作业2023
148 1
|
6月前
|
SQL 分布式计算 监控
MaxCompute产品使用合集之如何监控作业和资源使用情况
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
存储 SQL 分布式计算
MaxCompute产品使用合集之作业性能优化的规范包括哪些
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
7月前
|
SQL 分布式计算 大数据
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
106 0
|
7月前
|
SQL 分布式计算 监控
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况
MaxCompute提供了一些工具以帮助您监控作业和资源使用情况
87 4

相关产品

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