MaxCompute使用LogView查看Job信息

MaxCompute LogView

Logview是MaxCompute Job提交后查看和Debug任务的工具。通过Logview可看到一个Job的如下内容:

  • 任务的运行状态。
  • 任务的运行结果。
  • 任务的细节和每个步骤的进度。

查看Job logview的方法

odpscmd客户端命令

在使用odpscmd客户端执行sql命令时,Job提交到MaxCompute后,会生成Logview的链接并显示在job的详细信息中,例如如下命令:

odps@ YITIAN_BJ_MC>select count(*) from emp;

ID = 20200427025937110gqciz3pr2
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=YITIAN_BJ_MC&i=20200427025937110gqciz3pr2&token=TlBGUWxpTllRKzRMYmJ2TXppM294aTgwR09rPSxPRFBTX09CTzoxNzUzODE0MzI4NjM0Mjk4LDE1ODg1NjExNzcseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3lpdGlhbl9ial9tYy9pbnN0YW5jZXMvMjAyMDA0MjcwMjU5MzcxMTBncWNpejNwcjIiXX1dLCJWZXJzaW9uIjoiMSJ9
Job Queueing.
----------------------------------------------------------------------------------------------
                    STAGES        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  BACKUP
M1_job_0 .................    TERMINATED      1          1        0        0       0
R2_1_job_0 ...............    TERMINATED      1          1        0        0       0
----------------------------------------------------------------------------------------------
STAGES: 02/02    [==========================>>] 100%  ELAPSED TIME: 5.51 s     
----------------------------------------------------------------------------------------------
Summary:
resource cost: cpu 0.00 Core * Min, memory 0.00 GB * Min
inputs:
        yitian_bj_mc.emp: 14 (1721 bytes)
outputs:
Job run time: 0.000
Job run mode: service job
Job run engine: execution engine
...

可以直接在浏览器上打开Logview链接,进入查看Job的信息。例如这里在浏览器中打开上面的logview地址:

MaxCompute Studio脚本执行

在使用MaxCompute Studio执行SQL语句时,没有可视化的给出logview的地址,需要使用如下步骤进行查看。

1. 获取SQL语句执行的Job实例ID(instanceid)。MaxCompute Studio执行完SQL语句后,会出现一个Job的执行页面,其中包含了该instance的id,如下:

2. 使用wait instanceid;命令获取该instance的详细信息,其中包括该job实例的logview链接。在odpscmd中执行如下命令:

odps@ YITIAN_BJ_MC>wait 20200425123054590g4qg0tsa;

ID = 20200425123054590g4qg0tsa
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=YITIAN_BJ_MC&i=20200425123054590g4qg0tsa&token=QzNzdk4rUk4zZnlpQmxZQ2x0V1Q5N2wvMmlVPSxPRFBTX09CTzoxNzUzODE0MzI4NjM0Mjk4LDE1ODg0MjczMTMseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL3lpdGlhbl9ial9tYy9pbnN0YW5jZXMvMjAyMDA0MjUxMjMwNTQ1OTBnNHFnMHRzYSJdfV0sIlZlcnNpb24iOiIxIn0=
Job Queueing.
Summary:
resource cost: cpu 0.00 Core * Min, memory 0.00 GB * Min
inputs:
        yitian_bj_mc.maxcomputefee: 1996 (20833 bytes)
outputs:
Job run time: 0.000
Job run mode: service job
Job run engine: execution engine
...

同样,可以在浏览器中直接打开上面的logview页面,查看该job实例的运行情况:

Logview功能使用 

Logview功能组件

下面结合具体的Logview Web UI界面,介绍每个组件的含义。

Logview的首页分成上下两部分:

  • Instance信息
  • Task信息

Instance信息

在Logview页面中,上半部分是提交的SQL任务对应的MaxCompute Instance信息,包含URL链接、项目、InstanceID、提交人、开始时间、结束时间和状态(Status)等。

  • Instance信息部分,可以单击Status查看当前队列的Status详细信息,包含四种状态:
    • Waiting:说明当前作业正在MaxCompute中处理,并没有提交到分布式调度系统(Fuxi)中运行。
    • Waiting List : n:说明作业已提交至分布式调度系统(Fuxi)排队等待运行,当前在队列中处于第n位。
    • Running:作业在分布式调度系统(Fuxi)中运行。

说明 处于Terminated状态的Instance由于作业已处理完成,因此不存在队列信息。

  • 单击Status查看队列详细信息:
    • Sub Status:表示当前子状态信息。
    • WaitPos:表示排队位置,如果是0表示正在运行,如果为-表示尚未到Fuxi。
    • QueueLength:表示Fuxi中总的队列长度。
    • Total Priority:表示作业运行时经过系统判断后授予的优先级。
    • SubStatus History:单击后,可以查看作业执行的详细历史状态,包含状态码、状态描述、开始时间、持续时间等(某些版本暂时无历史信息)。

Task 信息

在Logview页面中,下半部分为该Instance对应的task信息,包括任务名称、类型、状态、运行结果(Result)、详细信息(Detail)、开始时间、结束时间、总运行时间(Latency)、进度。其中,Latency指运行总共消耗的时间,与其他页面的Latency含义类似。

Result:在Job运行结束后,可以看到运行结果。例如上面SQL的结果如下图所示:

Detail:一个Job在运行中和结束后,均可以单击Detail来查看任务运行的具体情况。

在MaxCompute Task详细信息对话框中,可以查看以下信息:

  • 一个MaxCompute Task可以由一个或多个Fuxi Job组成。例如,如果提交的SQL任务较为复杂,MaxCompute将自动向分布式调度系统(Fuxi)提交多个Fuxi Job。
  • 每个Fuxi Job可以由一个或多个Fuxi Task组成。例如,简单的MapReduce任务通常会产生两个Fuxi Task,即Map Task(M1)和Reduce Task(R2)。而一个比较复杂的SQL任务也可能产生多个Fuxi Task。
  • 查看所产生的Fuxi Task的任务名称。任务名称一般由字母和数字组成,其中字母表示任务类型(例如,M代表Map Task),数字标识任务编号以及依赖关系(例如,R5_4表示该Reduce Task需要J4任务执行结束后才会开始执行;J4_1_2_3则表示该Join Task需要M1、M2、M3这三个任务都执行完成后才会开始执行)。
  • I/O Records表示这个task的输入和输出的records数。

单击Fuxi Task最右侧的查看列中的按钮或双击该Fuxi Task,可以查看该Fuxi Task对应的Instance信息。说明:每个Fuxi Task由一个或多个Fuxi Instance组成。当Fuxi Task的输入数据量持续增大时,MaxCompute将自动为该Task启动更多的节点来处理数据,每个节点即对应一个Fuxi Instance。

在页面下方的Fuxi Instance信息部分,Logview将处于不同阶段的Instance进行分组展示。例如,可以选择Failed组,查看运行出错的节点。同时,可以单击StdOut和StdErr列中的按钮查看标准输出信息和标准错误信息。说明:在所提交的MaxCompute任务中编写的打印信息也将在标准输出信息和标准错误信息中展示。

使用Logview排查问题

出错的任务

当有任务出错时,可以在Logview页面的Result中看到错误的提示信息,也可以在Detail页面中通过Fuxi Instance的stderr,查看具体某个Instance出错的信息。

数据倾斜

运行缓慢有时是由于在某个Fuxi Task的所有Fuxi Instance中,有个别Instance形成长尾造成的。长尾的现象由同一个Task内任务分配不均导致。这时可以在任务运行完后,在Summay标签页中看运行结果。在每个Task中都可以看到如下输出:

output records:
R2_1_Stg1: 199998999  (min: 22552459, max: 177446540, avg: 99999499)

此处如果min和max值相差较大,不在一个数量级,说明在这一阶段出现了数据倾斜。例如在执行字段Join时,某个字段中有一个值出现的比例很高,则在这一字段上执行Join就会出现数据倾斜。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值