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

简介: 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逻辑尽量使用内置函数

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel超级工具箱_这6个Excel高效办公插件,你都用过吗?

1.易用宝。ExcelHome出品,永久免费,让繁琐或难以实现的操作变得简单可行,甚至能够一键完成,所有这些功能都将极大地提升 Excel 的便捷以及可用性!地址:http://yyb.excelhome.net2.方方格子工具箱。大部分功…

Yurt-Tunnel 详解|如何解决 K8s 在云边协同下的运维监控挑战

简介: 伴随着 5G、IoT 等技术的快速发展,边缘计算被越来越广泛地应用于电信、媒体、运输、物流、农业、零售等行业和场景中,成为解决这些领域数据传输效率的关键方式。与此同时,边缘计算形态、规模、复杂度的日益增长,…

RTC风向标:11月最值得关注的26个热点

近年来,实时音视频快速发展,WebRTC作为实时音视频的标准也快速发展,从直播到通讯,其应用场景也在不断丰富。如果您关注实时音视频方向的技术产品应用与创新,本系列文章就将会为您分享音视频方向的技术产品动态&#xf…

克隆需要验证_[实验技巧]CRISPR实验中如何验证编辑?

在CRISPR/Cas9基因组编辑实验中,如果你已经构建好了gRNA表达载体,并利用Cas9将它引入了目标细胞,那么恭喜你!成功就在眼前,指日可待。下一步,你还要验证一下,看看细胞的编辑是否如你所愿。在此&…

基于边缘云的机器流量管理技术实战

简介: CDN是通过在全球范围内分布式地部署边缘服务器将各类互联网内容缓存到靠近用户的边缘服务器上,从而降低用户访问时延并大幅减少穿越互联网核心网的流量。互联网业务使用CDN已经成为一种必然的选择。 企业边缘应用面临的挑战 CDN是通过在全球范围…

python中的repr是什么意思_python中str和repr有什么区别

python中str和repr有什么区别?下面给大家详细介绍: 1、内建函数str()和repr() 或反引号操作符()可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。 2、str()函数得到的字符串可读性好(故被print调用&am…

Go语言入门分享

简介: Go语言出自Ken Thompson、Rob Pike和Robert Griesemer之手,起源于2007年,并在2009年正式对外发布。Go的主要目标是“兼具Python等动态语言的开发速度和C/C等编译型语言的性能与安全性”,旨在不损失应用程序性能的情况下降低…

瑞欧威尔联合创始人兼CEO 李波博士:“工业元宇宙”是为了更好赋能实体经济

2021年12月10日,由广东省游戏产业协会、广东省虚拟现实产业技术创新联盟、深圳市科学技术协会、深圳市互联网文化市场协会指导,陀螺科技主办,深圳市科技开发交流中心、恒悦创客魔方协办,行业头部媒体游戏陀螺、VR陀螺、陀螺电竞、…

加载模型图_Tensorflow ckpt模型加载时的命名映射

tensorflow代码在加载ckpt模型时一般会使用如下代码:saver tf.train.Saver() with tf.Session() as sess:saver.restore(sess, "model.ckpt")那么问题来了,如果想把开源的ckpt模型加载到自己代码里不同的变量命名空间中, 应该如何…

Flink + Iceberg + 对象存储,构建数据湖方案

简介: 上海站 Flink Meetup 分享内容,如何基于Flink、对象存储、Iceberg 来构建数据湖生态。 本文整理自 Dell 科技集团高级软件研发经理孙伟在 4 月 17 日 上海站 Flink Meetup 分享的《Iceberg 和对象存储构建数据湖方案》,文章内容为&…

fdisk 分区_【linux】循序渐进学运维-基础篇-分区命令fdisk

大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第47篇文章。本文我们来讨论一下fdisk命令的使用,使用fdisk可以做分区管理。1. 命令概述:fdisk 作用: 磁盘分区,是Linux发行版本中最常用的分区…

自动生成考勤表_可自动变色的考勤表,逢周末自动更新,你会制作吗?

员工考勤表对于许多职场HR来说,应该是再熟悉不过。一般情况下的考勤表都是按照月份进行统计,比如说11月分1-30号每天会对人员出勤情况进行登记。为了方便我们对表格的查看,我们经常会看到周末两天的单元格颜色会不同。如上图所示,…

通盘无妙手,恒生电子落子 Light 云,三大新品持续提升金融科技生产力

据普华永道《2020年与未来的金融服务技术:拥抱颠覆者》报告显示,全球 81% 银行 CEO 在众多领域中十分关注科技发展。在“无科技不金融”的趋势下,科技深度影响金融行业改革。 伴随云计算、大数据、人工智能、区块链等关键技术的发展&#xf…

实时数仓入门训练营:基于 Apache Flink + Hologres 的实时推荐系统架构解析

简介: 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打磨课程内容,直击当下…

沙盒化容器:是容器还是虚拟机

作者 | Addo Zhang来源 | 云原生指北随着 IT 技术的发展,AI、区块链和大数据等技术提升了对应用毫秒级扩展的需求,开发人员也面临着的功能快速推出的压力。混合云是新常态,数字化转型是保持竞争力的必要条件,虚拟化成为这些挑战的…

实时数仓入门训练营:实时计算 Flink 版 SQL 实践

简介: 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打磨课程内容,直击当下…

Web3.0 兴起之际,元宇宙这杯羹怎么分?

作者 | aNumak & Company译者 | 弯月出品 | CSDN(ID:CSDNnews)在听到元宇宙时,你首先想到的可能是科幻小说,或另一个宇宙。你的联想没有错,元宇宙是科幻作家尼尔斯蒂芬森在小说《雪崩》中创造的词语。意…

git 撤销挂起的更改_小姐姐带你用Git

首先,Git 是什么?项目版本管理工具Git 的工作原理 又 是怎么样的?Git最重要的两个概念:1.工作区和缓存区、版本库2.master 指针 和 HEAD 指针现在,小姐姐打开iterm,跟着一起使用git叭Git init - 初始化一个…

如何利用云原生技术构建现代化应用

简介: 阿里云为企业提供了基于阿里云互联网架构的解决方案,也同时让这些新的互联网应用、新的电商平台应用迁移到阿里云上。 作者|愚奇 ​ 今天,云和云计算技术已经被企业广泛所接受,关于云、云计算、云原生都有非常多…

加速引擎SmartFlow助力浪潮云海超融合2021H1中国市场增速第一

近日,国际数据公司(IDC)发布《2021 H1软件定义存储和超融合系统市场报告》显示,浪潮云海超融合产品2021 上半年同比增长135.6%,为业内平均增幅(49%)2.7倍,增速…