文档首页/ MapReduce服务 MRS/ 组件操作指南(安卡拉区域)/ 使用Spark/ Spark常见问题/ HistoryServer缓存的应用被回收,导致此类应用页面访问时出错
更新时间:2024-11-29 GMT+08:00

HistoryServer缓存的应用被回收,导致此类应用页面访问时出错

问题

在History Server页面中访问某个Spark应用的页面时,发现访问时出错。

查看相应的HistoryServer日志后,发现有“FileNotFound”异常,相关日志如下所示:

2016-11-22 23:58:03,694 | WARN  | [qtp55429210-232] | /history/application_1479662594976_0001/stages/stage/ | org.sparkproject.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:628)
java.io.FileNotFoundException: ${BIGDATA_HOME}/tmp/spark/jobHistoryTemp/blockmgr-5f1f6aca-2303-4290-9845-88fa94d78480/09/temp_shuffle_11f82aaf-e226-46dc-b1f0-002751557694 (No such file or directory)

回答

在History Server页面加载Task个数较多的Spark应用时,由于无法把全部的数据放入内存中,导致数据溢出到磁盘时,会产生前缀为“temp_shuffle”的文件。

HistoryServer默认会缓存50个Spark应用(由配置项“spark.history.retainedApplications”决定),当内存中的Spark应用个数超过这个数值时,HistoryServer会回收最先缓存的Spark应用,同时会清理掉相应的“temp_shuffle”文件。

当用户正在查看即将被回收的Spark应用时,可能会出现找不到“temp_shuffle”文件的错误,从而导致当前页面无法访问。

如果遇到上述问题,可参考以下两种方法解决。

  • 重新访问这个Spark应用的HistoryServer页面,即可查看到正确的页面信息。
  • 如果用户场景需要同时访问50个以上的Spark应用时,需要调大“spark.history.retainedApplications”参数的值。
    请登录FusionInsight Manager管理界面,单击“集群 > 服务 > Spark > 配置”,单击“全部配置”,在左侧的导航列表中,单击“JobHistory > 界面”,配置如下参数。
    表1 参数说明

    参数

    描述

    默认值

    spark.history.retainedApplications

    HistoryServer缓存的Spark应用数,当需要缓存的应用个数超过此参数值时,HistoryServer会回收最先缓存的Spark应用。

    50