Spark UI页面样式文件加载错误的排查过程

问题描述

spark以cluster模式运行在yarn上. 我们访问这个正在运行着的Spark UI时, 发现页面缺少样式, 如下图.


Spark UI页面样式文件加载错误的排查过程_第1张图片
image.png

排查

  1. 我们之前使用Spark 2.2.0时. 也遇到过类似的情况, 当时排查出问题的根源是yarn需要一个参数, 但是spark没有给提供.
    具体内容见这个issue: YARN-7269
    但是我们现在使用的Spark版本是2.4.4, 按理来说在Spark中已经解决掉了这个问题, 具体可以参考下面的两个链接:

    • SPARK-23679
    • commit#22164
      所以排除了这个原因.
  2. 后来在查看Spark 的后台日志时看到下面的报错. NoSuchMethodError, 说明servlet-apijar包冲突了.

2019-11-05 03:55:24,986 WARN  [SparkUI-44] servlet.ServletHandler: Error for /static/sorttable.js
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncSupported()Z
        at org.spark_project.jetty.servlet.DefaultServlet.sendData(DefaultServlet.java:943)
        ............省略...............

到这里, 主要是排查这个jar包是从哪里引入进来的. IDEA的jar包分析功能用起来!

  1. 找到项目, 显示包的依赖项.


    Spark UI页面样式文件加载错误的排查过程_第2张图片
    image.png
  2. 在页面中ctrl+f查找servlet-api, 当我们想要在这个图中找到引用它的jar包(父辈)时, 密密麻麻的关系线会使得查找非常困难. 所以这里推荐使用"仅显示所选jar包相关联的jar包"项, 然后不断的单击引用了它的父辈jar包, 就会显示"爷爷辈"jar包, 以此类推, 双击就会进入到对应的pom文件中.


    Spark UI页面样式文件加载错误的排查过程_第3张图片
    image.png

最后找到这个jar包在项目里的终极父包, 然后结合实际, 排除还是怎么滴, 都可以.

你可能感兴趣的:(Spark UI页面样式文件加载错误的排查过程)