作业诊断

Spark on MaxCompute作业提交后,您可以通过MaxCompute提供的Logview或Spark Web-UI工具获取作业日志,以检查作业是否已正常提交并执行。

背景信息

Spark on MaxCompute通过Spark-submit方式(DataWorks执行Spark任务时也会产生相应日志)成功提交作业后,MaxCompute会创建一个Instance,并在日志中打印Instance的Logview和Tracking URL,您可根据Logview或Tracking URL追踪作业的运行情况。

  • Logview:即以logview.odps.aliyun.com开头的URL,是MaxCompute自研的分布式作业追踪工具。

  • Tracking URL:即方便用户查看Spark Web-UI的URL。

以下为输出Logview和Tracking URL的作业示例:

  1. 提交作业。

    cd $SPARK_HOME
    bin/spark-submit --master yarn-cluster --class  SparkPi /tmp/spark-2.x-demo/target/AliSpark-2.x-quickstart-1.0-SNAPSHOT-shaded.jar
  2. 查看Instance日志。

    19/01/05 20:36:47 INFO YarnClientImplUtil: logview url: http://logview.odps.aliyun.com/logview/?h=http://service.cn.maxcompute.aliyun.com/api&p=qn_beijing&i=xxx&token=xxx
    成功标准: <看到以下输出,可能会有其他日志一并输出>
    19/01/05 20:37:34 INFO Client:
       client token: N/A
       diagnostics: N/A
       ApplicationMaster host: 11.220.xxx.xxx
       ApplicationMaster RPC port: 30002
       queue: queue
       start time: 1546691807945
       final status: SUCCEEDED
       tracking URL: http://jobview.odps.aliyun.com/proxyview/jobview/?h=http://service.cn.maxcompute.aliyun-inc.com/api&p=project_name&i=xxx&t=spark&id=application_xxx&metaname=xxx&token=xxx

使用Logview工具诊断作业

logview.odps.aliyun.com开头的URL,统称为Logview。Logview是MaxCompute自研的分布式作业追踪工具。该工具的功能如下:

  • 获取作业的状态。

  • 获取作业各节点的启停调度信息。

  • 获取作业各节点的标准输入输出日志。Spark结果输出建议打印到StdOut,Spark的log4j日志则默认输出到StdErr。

  • Logview的时效性为3~5天。当本地磁盘已满时,StdOut和StdErr会被清理掉。

  1. 在浏览器中打开日志输出的Logview,查看CUPID类型作业的运行情况。

    Logview

  2. 在Logview页面,执行如下操作。

    1. 单击Detail,查看作业的详情。master-0代表Spark Driver所在节点。

    2. 单击master-0并选择All Tab,查看Spark Driver节点的具体信息。

    3. 单击StdOut,查看节点的结果输出。

    4. 单击StdErr,查看节点的log4j日志。

使用Spark-Web-UI诊断作业

日志输出的Tracking URL,表示您的作业已经提交到MaxCompute集群。Tracking URL是Spark Web-UI和HistoryServer的URL。该工具的功能如下:

  • 获取原生Spark-Web-UI的所有信息。

  • 作业运行时,此页面显示作业运行的实时信息。

  • 作业运行结束后,把事件从驱动传递到HistoryServer有1~3分钟的延迟。作业运行结束后,立刻打开Tracking URL时,可能会出现一个页面,显示Application application_1560240626712_2078769635 not found.错误。请稍后重试即可正常访问。

  1. 在浏览器中打开日志输出的Tracking URL,查看Spark作业的运行情况。

    Tracking URL

  2. 在Tracking URL页面,执行如下操作。

    1. 单击Environment,确认设置的Spark参数是否全部正确。

    2. 单击Executors,查看是否有Dead节点,以及Spark Driver的StdOut和StdErr。

    3. 单击Stdout,查看节点的结果输出。

    4. 单击Stderr,查看节点的log4j日志。