MaxCompute Logview2.0 参数详解及常见问题 | 学习笔记

简介: 快速学习 MaxCompute Logview2.0 参数详解及常见问题

开发者学堂课程【SaaS  模式云数据仓库系列课程 —— 2021数仓必修课MaxCompute Logview2.0  参数详解及常见问题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/55/detail/1045


MaxCompute Logview2.0  参数详解及常见问题


内容简介:

一、MaxCompute  作业基本概念

二、Logview  的生成过程

三、Logview  原理

四、Logview 1.0 VS 2.0

五、使用 Logview 分析作业

六、常见问题

七、参考文档



一、MaxCompute  作业基本概念

MaxCompute  有很多专业术语,logview 中内容直接沿用了这些术语,为了便于理解logview  ,首先需要理解相关概念。

控制集群∶

· Job/Instance/MaxCompute Instance ∶代表用户提交的作业,每个作业具有instanceld  进行唯一标示。

·Task/MaxCompute Task ∶作业在运行时所属的类型,例如  SQL task,LOT Task,Graph

Task 等,一般一个  Instance   只有一个  Task,所以  logview 2.0  隐藏了该信息。(1.0 是有的)

计算集群∶

·Fuxi  ∶作业实际计算层,以  fuxi job -》fuxi task-》fuxi instance   层级递进。

image.png

·DAG 图∶fuxi task   具有依赖关系,连接所有   fuxi task 构成了有向无环图。

·Operator∶ uxi task   内部的算子,例如  TableScan,TableSink,是数据处理的逻辑。

image.png



二、Logview  的生成过程

Logview   是用于查看  MaxCompute  作业的工具,可以展示作业实际执行的每一处细节。

当作业运行出错,运行变慢等都需要通过  logview  进行定位。

image.png

LogviewURL  结构∶

logview  域名+MaxCompute endpoint+project+ instanceld+ token+other parameters,

例如∶https∶//logview.aliyun.com/logview/?

h=http://service.cn.maxcompute.aliyun.com/api&p=huadong_1_test&i=20201103031620528 g3e7n4pr2&token=eEdUUEI0SWh3ZUFVS043SitFT21PUm5mQ3RvPSxPRFBTX09CTzoxNzY 3OTc2MDA5NDY4MDcxLDE2MDY5NjUzODAseyJTdGF0ZW1IbnQiOIt7IkFjdGIvbil6WyJvZHBz OlJIYWQiXSwiRWZmZWNOljoiQWxsb3ciLCJSZXNvdXJjZS6WyJhY3M6b2RwczoqOnByb2pIY 3RzL2h1YWRvbmdfMV90ZXNOL2luc3RhbmNIcy8yMDIwMTEwMzAzMTYyMDUyOGczZTduNH ByMiJdfVOsIIZIcnNpb24iOilxIn0=

有效期∶和logview 1.0一样,2.0 也有有效期,一般是30天。


三、Logview  原理

Logview  跟常规  web  应用一样,由前后端组成,前端渲染页面,后端汇总MaxCompute  各种运行息。

Logview 1.0 原理非常简单,就是一个页面展示+代理,所有页面展示的内容都是调用  MaxComput  的  restful api  实现,2.0  实现稍微复杂些,数据源更加丰富,支持一些定制化任务展示。

image.png


四、Logview 1.0 VS 2.0

logview 2.0  相比于 1.0  重新升级页面风格,简化作业查看流程,提供1.0 原有数据前提下,增强了DAG 展示、作业回放等功能。

image.png

image.png

image.png

image.png

(3)substatusHistory详解

image.png

Waiting for scheduling  作业已提交,等待  MaxCompute   框架调度,一般很短

Waiting for cluster resource框架发现fuxi 计算集群没资源,直接等

Waiting for concurrent task slotproject级别流控,project可以设置并行提交sql个数,弹内不限制,公共云限制,有限制后这个就是流控。

Waiting for data replication 等待数据复制

Waiting for execution slot 这个是系统级别流控

Waiting for cleaning up of previous task attempt等待清理执行历史完成

Waiting for execution从父进程队列拿出来分发给子进程执行过程,一般很快。

Waiting lazy package launching Updating package version

Preparing for execution明确知道交给子进程,如果子进程出问题才会时间长。


五、使用  Logview  分析作业

5.1分析运行出错作业

作业运行失败时,通过  logview   查看  result  可以查看出错信息,对于失败的作业,打开  logview 默认会跳转到  result tab。

常见失败包括∶

● sql 语法错误,此时不会有  DAG  和  fuxi jobs ,因为还没有提交到计算集群执行

● 用户  udf 出错,调查步骤  result -》DAG 确定出问题的udf-》查看stdout/stderror等

● 除明确提示的错误,其他问题多数需要找  MaxCompute   值班同学排查。

5.2分析运行慢作业

编译阶段

首先,查看作业排队情况, 如果  queue>0,说明等待资源,排队中,一般除了增加计算资源,只能找出占用大户,评估是否可以kill 掉,让出资源。

image.png

其次,就算作业运行起来了,queue = 0,可能还会存在等计算资源情况,比如高优先级作业抢占,此时表现是subStatus 为OfflineJob is Running 或  OfflineJob waiting for run  ,查看  fuxi instance状态,有大量  waiting  或ready  状态。

image.png

对于结束后的作业如何分析当时是否等资源可以通过  latency chart  ,理想的latency chart  ,底部应该是一条直线,说明作业同时启动了,如果是条斜线说明存在等资源情况。

image.png

运行阶段

后面就是运行中慢了, 可能有几种情况数据倾斜,数据膨胀。UDF执行效率低。作业发生重跑。

数据倾斜

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

image.png

解决方法∶

根据业务数据实际情况打散热点key,具体参见

https://help.aliyun.com/document_detail/102614.html?spm=a2c4g.11186623.3.3.462c66604egnSi

数据膨胀

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

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

image.png

解决思路∶

1.检查代码是否有 bug∶

>JOIN  条件是不是写错了,变成笛卡尔积了;

>UDTF  是不是有问题,输出了太多数据。

2.避免  join  引起的数据膨胀。

比如∶两个表   join,左表是人口数据,数据量很大,但是由于并行度足够,效率可观。右表是个维表,记录每种性别对应的一些信息(比如每种性别可能的坏毛病)、 虽然只有两种性别,但是每种都包含数百行。那么如果直接按照性别来 join,可能会让左表膨胀数百倍。要解决这个问题,可以考虑先将右表的行做聚合,变成两行数据,这样  join  的结果就不会膨胀了

UDF  执行效率低

【特征】某个 task 执行效率低,且该 task 中有用户自定义的扩展。甚至是  UDF  的执行超时报错"Fuxi job failed-WorkerRestart errCode:

252,errMsg:kInstanceMonitorTimeout,usually caused by bad udf  

image.png

performance"。

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

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

解决方法∶

1. 检查   UDF  是否有   bug。

2.使用内置函数替换自定义  udf  ,内置函数一般效率更高。

3.将  UDF  函数进行功能拆分,部分用内置函数替换。函数无法实现的再用 UDF。

4.优化   UDF  的 evaluate 方法,将重复计算提取到初始化中。

作业重跑

有的  MaxCompute 作业打开了  service mode 功能,默认会优先使用  service mode 模式,可以在  project  级别设置

("odps.service.mode.enable.odps2"∶"true"),如果  service mode  失败,比如instance  个数超过1000,或者运行超过10分钟,就会退回以  Offline  模式重跑。

image.png

image.png

结束阶段

有时会发现  fuxi task   都已经运行结束但是作业依然没有结束情况,此时可能是合并小文件或动态分区元数据更新。

大小低于  64MB  的文件被认为是小文件,过多的小文件既会影响存储效率,也会降低计算速度,为了避免系统产生过多小文件, SQL  作业在结束时会针对一定条件自动触发合并小文件的操作,及  Merge job。

image.png

解决方法:

https∶//help.aliyun.com/document_detail/117430.html?

spm=5176.11065259.1996646101.searchclickresult.67a35a8fsLWgmr


六、常见问题

1.为什么我的作业没有显示  DAG  图?

a.例如  grant,drop table  等语句不需要启动  fuxi job,因此就没有  DAG  图。

b.algoTask 类型作业默认不展示  DAG  图。

c.语法错误情况,由于尚未启动  fuxi job,也没有  DAG  图。

2.为什么  DAG  图双击不能看  operator  图?

a.只有  SQL,SQLRT  类型作业支持查看  Operator  图。

b.logview   依赖执行计划画图,如果获取执行计划失败,logview  依然可以用  fuxi task 名字画  DAG  图,此时需要联系  MaxCompute  值班同学调查。

3. DataWorks,MaxCompute  优先级问题?

MaxCompute 作业优先级与  DataWorks  优先级相反,9-DataWorks = MaxCompute instance 优先级,logview 显示的是  MaxCompute  优先级(1~8), 数字越低优先级越高。

4.fuxi task instance  个数变来变去怎么回事?

fuxi instance  个数默认不需要配置,可以通过输入数据多少自动设置。HBO 可以动态修改instance 个数,如果  sgl  有改动会导致  hbo  失效,此时  instance个数就会发生变化,等运行一段时间  hbo  重新生效就会正常。

Map  数根据  splitsize  默认  256M

Reduce   跟表的  bucket,上游的  map  数共同决定。

hbo 会动态调整  worker 个数,可以运行中调整,比如发现多了,可以自动调小。

5.fuxi instance 的时间为啥不是  fuxi task 的开始时间,主要是花费什么时间?

image.png

如果计算资源不够,fuxi instance 就会等待,此时就会发上  fuxi instance   的开始时间晚于 task 开始时间

6.查看  stdout /stderror 报错文件找不到,提示被回收

由于  stdout/stderror  是保存在  MaxCompute   运行作业的临时目录中,时间一长就会被回收,回收快慢取决干所在集群繁忙程度,一般一天内是能看到,如果回收过快可以找  MaxCompute  值班同学协调排查。

7.Fuxi task  种类?

fuxi task 包括M,R, J,C,C是  condition map join  ,会在运行时动态决定使用哪种  join  算法。


七、参考文档

1.SQL  调优   https∶

//help.aliyun.com/document_detail/102614.html?

spm=a2c4g.11186623.3.3.462c66604egnSi

2.Join  长尾优化https∶//help.aliyun.com/document_detail

/143996.html?spm=a2c4g.11186623.6.1089.60f23de8zeVxHA

3.其他计算长尾优化  https∶

//help.aliyun.com/document_detail/

51020.html?spm=a2c4g.11186623.6.1090.48c61a61RDoLNZ

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之maxcompute资源打开失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
分布式计算 大数据 数据库连接
maxcompute开发环境问题之参数解析失败如何解决
MaxCompute开发环境是指设置和配置用于开发MaxCompute项目的本地或云端环境;本合集将指导用户如何搭建和管理MaxCompute开发环境,包括工具安装、配置和调试技巧。
|
2月前
|
SQL 分布式计算 DataWorks
maxcompute配置问题之配置回退的参数如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
40 2
|
2月前
|
分布式计算 大数据 数据处理
maxcompute配置问题之配置文件key参数如何解决
MaxCompute配置是指在使用阿里云MaxCompute服务时对项目设置、计算资源、存储空间等进行的各项调整;本合集将提供MaxCompute配置的指南和建议,帮助用户根据数据处理需求优化其MaxCompute环境。
48 2
maxcompute配置问题之配置文件key参数如何解决
|
4月前
|
SQL 分布式计算 大数据
Python+大数据学习笔记(一)
Python+大数据学习笔记(一)
43 0
|
1月前
|
数据采集 分布式计算 DataWorks
DataWorks常见问题之dataworks引用maxcompute资源失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
3月前
|
缓存 Java 大数据
CDH大数据环境参数优化指南
CDH大数据环境参数优化指南
|
3月前
|
分布式计算 DataWorks 网络安全
DataWorks中绑定MaxCompute引擎时发生了非法参数异常
【1月更文挑战第6天】【1月更文挑战第27篇】DataWorks中绑定MaxCompute引擎时发生了非法参数异常
38 3
|
4月前
|
关系型数据库 MySQL 大数据
大数据开发工程师基本功修炼之Linux学习笔记(四)
大数据开发工程师基本功修炼之Linux学习笔记(四)
110 1
|
5月前
|
大数据
数据治理专业认证CDMP学习笔记(思维导图与知识点)- 第14章大数据与数据科学篇
数据治理专业认证CDMP学习笔记(思维导图与知识点)- 第14章大数据与数据科学篇