(odps)maxcompute 日志操作学习

来源:互联网 发布:阿里云ecs建站教程 编辑:程序博客网 时间:2024/06/06 04:03

Logview

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

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

Job提交到MaxCompute后,会生成Logview的链接,用户可以直接在浏览器上打开Logview链接进入查看job信息,每个job的Logview页面的有效期为一周。

Logview功能组件解读

下面结合具体的Logview Web UI界面来说明每个组件的含义。

public_index

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

  • Instance信息;
  • Task信息。

Instance 信息

Logview首页中上半部分为用户提交的SQL生成的MaxCompute Instance,每个SQL提交后会生成唯一的ID。Latency指运行总共消耗的时间,其他页面的latency含义类似。下面重点介绍Status。

Status包含四种状态

  • Waiting:说明当前作业正在Odps中处理,并没有提交到Fuxi中运行。
  • Waiting List : n 说明作业已提交到Fuxi并在Fuxi中排队,在队列中处于第n位。
  • Running:作业在Fuxi中运行。
  • Terminated:作业已结束,此时无队列信息。

其中非Terminated状态都可以点击查看详细队列信息。

点击Status 查看队列详细信息

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

public_queue_detail

Task 信息

Logview首页中下半部分是该task的说明,重点说明Result与Detail。

Result:

在Job运行结束后,可以看到运行结果,如一条select SQL的结果如下图。

public_task_result

Detail:

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

public_task_detail

  • 一个Odps Task由一个或者多个Fuxi Job组成。例如当用户的SQL任务十分复杂时,Odps会向Fuxi提交多个Fuxi Job。

  • 每个Fuxi Job由一个或者多个Fuxi Task组成。简单的MapReduce通常会产生两个Fuxi Task,一个是Map一个是Reduce,用户会见到两个Fuxi Task的名字分别为M1和R2,当SQL比较复杂时,可能会产生多个Fuxi Task,如上图所示。

  • 在每个Task中,可以看到Task的名字,对于M1,表示这是一个Map task, R5_4中的4表示它依赖J4执行结束才能开始执行。同理,J4_1_2_3表示Join4这个阶段要依赖M1、M2、M3三个task完全成才能启动运行。

  • I/O Records表示这个task的输入和输出的records数。

点击任一Fuxi Task可查看Fuxi Instance内容:

public_fuxi_instance

每个Fuxi Task由一个或者多个Fuxi Instance组成,当用户的输入数据量变大时,MaxCompute会在每个Task启动更多的节点来处理数据。每个节点就是一个Fuxi Instance。双击Fuxi Task最右边一栏查看,或者直接双击该行,就可以打开具体的Fuxi Instance信息。

在页面的下方,Logview为不同阶段的Instance进行了分组,查看出错的节点可以选择Failed栏。

在StdOut和StdErr两栏中,可以查看标准输出和标准错误信息,用户自己打印的信息也可以在这里查看。

通过Logview进行问题排查

出错的任务

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

数据倾斜

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

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

在这里如果看到min和max相差很大,就说明在这一阶段出现了数据倾斜,比如在Join时某个字段中有一个值出现的比例很高,在这一字段上做Join就会出现数据倾斜。

原创粉丝点击