0

如何登录 Qubole/从 Qubole 上的 spark 访问日志?我的设置:

  • Java 库 (JAR)
  • Zeppelin Notebook (Scala),只需调用库中的方法
  • Spark、Yarn 集群
  • 库中使用的Log4j2(配置登录stdout)

如何从 log4j2 记录器访问我的日志?到目前为止我尝试了什么:

  • 查看我的口译员的“日志”部分
  • 浏览每个执行程序的 Spark UI 的标准输出日志
4

1 回答 1

0

当 Spark 作业或应用程序失败时,您可以使用 Spark 日志来分析故障。

QDS UI 提供指向应用程序 UI 和 Spark 应用程序 UI 中的日志的链接。

如果您从分析页面运行 Spark 作业或应用程序,则可以通过应用程序 UI 和 Spark 应用程序 UI 访问日志。

如果您从 Notebooks 页面运行 Spark 作业或应用程序,则可以通过 Spark 应用程序 UI 访问日志。

访问应用程序 UI 访问 Spark 应用程序 UI 您还可以附加日志来识别 Spark 作业中的错误和异常或应用程序故障。

访问应用程序 UI 要从 QDS UI 的分析页面通过应用程序 UI 访问日志:

请注意命令 id,它是 Qubole 作业或命令所独有的。单击搜索栏右侧的向下箭头。“检索历史”页面如下图所示。

../../_images/spark-debug1.png 在命令 ID 字段中输入命令 ID,然后单击应用。

任何 Spark 作业的日志都显示在应用程序 UI 和 Spark 应用程序 UI 中,可在“日志”和“资源”选项卡中访问它们。这些 UI 中的信息可用于跟踪与命令状态相关的任何信息。

下图显示了带有链接的日志选项卡示例。

单击日志选项卡或资源选项卡中的应用程序 UI 超链接。

Hadoop MR 应用程序 UI 如下图所示。

../../_images/application-ui.png Hadoop MR 应用程序 UI 显示以下信息:

MR 应用程序主日志 Total Mapper/Reducer 任务 Completed/Failed/Killed/Successful tasks 注意

MR 应用程序主日志对应于 Spark 驱动程序日志。对于任何与 Spark 驱动程序相关的问题,您应该验证 AM 日志(驱动程序日志)。

如果要检查失败作业的异常情况,可以单击 Hadoop MR 应用程序 UI 页面中的日志链接。将显示包含 stdout、stderr 和 syslog 的 Application Master (AM) 日志页面。

访问 Spark 应用程序 UI 您可以使用 Spark 应用程序 UI 从分析页面和笔记本页面访问日志。

从分析页面 从主菜单导航到分析页面。请注意命令 id,它是 Qubole 作业或命令所独有的。单击搜索栏右侧的向下箭头。“检索历史”页面如下图所示。../../_images/spark-debug1.png 在命令 ID 字段中输入命令 ID,然后单击应用。单击日志选项卡或资源选项卡。单击 Spark 应用程序 UI 超链接。从笔记本页面 从主菜单导航到笔记本页面。

单击右上角的 Spark 小部件,然后单击 Spark UI,如下图所示。

../../_images/spark-ui.png 或

点击段落中的 i 图标,如下图所示。

../../_images/spark-debug2.png 当您从 Notebooks 页面的 Spark 小部件或从分析页面打开 Spark UI 时,Spark 应用程序 UI 将显示在单独的选项卡中,如下图所示。

../../_images/spark-application-ui.png Spark 应用程序 UI 显示以下信息:

作业:作业选项卡显示已完成、成功和失败的作业总数。它还显示作业已成功的阶段数。

阶段:阶段选项卡显示已完成和失败阶段的总数。如果要查看有关失败阶段的更多详细信息,请单击“描述”列中的失败阶段。失败阶段的详细信息如下图所示。

../../_images/spark-app-stage.png 错误列显示失败任务的详细错误消息。您应该记下执行程序 ID 和主机名以查看容器日志中的详细信息。有关错误堆栈跟踪的更多详细信息,您应该检查容器日志。

存储:如果启用缓存,存储选项卡会显示缓存的数据。

环境:环境选项卡显示有关 JVM、Spark 属性、系统属性和类路径条目的信息,这有助于了解 Spark 集群在运行时使用的属性值。下图显示了环境选项卡。

../../_images/spark-app-env.png Executors :Executors 选项卡显示容器日志。您可以使用执行程序 ID 和主机名映射容器日志,主机名显示在 Stages 选项卡中。

Qubole 上的 Spark 在 Executors 选项卡中提供了以下附加字段:

Resident size/Container size:将容器内使用的总物理内存(即executor的java heap + off heap memory)显示为resident size,配置的yarn container size(即executor memory + executor Overhead)显示为Container size。Heap used/committed/max:显示执行器的java堆对应的值。下图显示了 Executors 选项卡。

../../_images/spark-app-exec.png 中的日志列显示容器日志的链接。此外,还会显示每个执行器执行的任务数以及活动、失败、已完成和总任务数。

笔记

对于调试容器内存问题,您可以检查容器大小、使用的堆、输入大小和随机读取/写入的统计信息。

反馈 访问其他 Spark 日志 除了从 QDS UI 访问日志外,您还可以访问驻留在集群中的以下日志,以识别 Spark 作业失败中的错误和异常:

它包含 Spark 事件日志。Spark 历史服务器日志:spark-yarn-org.apache.spark.deploy.history.HistoryServer-1-localhost.localdomain.log 文件存储在 /media/ephemeral0/logs/spark。Spark 历史服务器日志仅存储在集群的主节点上。

Spark 事件日志:Spark 事件日志文件存储在 /logs/hadoop///spark-eventlogs 中,其中:

scheme 是特定于云的 URI 方案: s3:// 用于 AWS;用于 Azure 的 wasb:// 或 adl:// 或 abfs[s];oci:// 用于 Oracle OCI。defloc 是 QDS 帐户的默认存储位置。cluster_id 是 QDS UI 的集群页面上显示的集群 ID。cluster_inst_id 是集群实例 ID。您应该联系 Qubole 支持以获取集群实例 ID。

于 2020-05-28T16:24:50.803 回答