如何使用X-Pack Spark的YarnUI、SparkUI、Spark日志、任务运行状况的分析

简介: 概述 X-Pack Spark目前是通过Yarn管理资源,在提交Spark 任务后我们经常需要知道任务的运行状况,例如在哪里看日志、怎么查看每个Executor的运行状态、每个task的运行状态,性能瓶颈点在哪里等信息。

概述

X-Pack Spark目前是通过Yarn管理资源。在提交Spark 任务后我们经常需要知道任务的运行状况,例如任务失败了在哪里看日志、怎么查看每个Executor的运行状态、每个task的运行状态,性能瓶颈点在哪里等信息。
本文主要介绍如何使用X-Pack Spark的Yarn UI 和Spark Job UI来获取上述的信息。

Yarn 基础知识介绍

Yarn 是hadoop体系中的一个资源管理和调度的组件。网上搜索Spark on Yarn有很多学习资料,这里只做简单入门级介绍:Spark作业的运行是向Yarn提交一个任务,Yarn拿到任务后分配、调度资源,然后调研Spark集群跑任务。过程如下图所示:
image
关于Yarn的官网资料可参考:Apache Hadoop Yarn

X-Pack Spark 作业管理链接介绍

X-Pack Spark提供了作业管理,可以提交Spark任务(后台逻辑是提交到Yarn,Yarn再调度Spark集群)。任务运行的状态有如下几个链接:
Snip20191022_2
如上图有四个链接:日志,Spark UI,Yarn UI,详情,停止。

  1. 日志
    这里的日志点进去是控制台提交任务的日志,对应后台Livy的日志。主要显示Livy 与 Spark交换的日志。
  2. Spark UI
    Spark UI是Spark job 运行的详细信息,下面会详细介绍。
  3. Yarn UI
    Yarn UI 点击进去是Yarn的管理界面,下面会详细介绍。
  4. 详情
    任务提交的参数详情
  5. 停止
    点击可以停止此次任务。

常用的就是Spark UI 和 Yarn UI, 通过Yarn UI 和 Spark UI 可以查看Spark 运行的日志,包括Driver的日志和Executor的日志。具体的使用方法下面详情介绍。

Yarn UI的介绍

Yarn UI入口

X-Pack Yarn UI入口有两个。

1、从X-Pack Spark集群明细界面入口。如下图,点击“YARN”,进入Yarn UI。

注意:请先阅读“UI访问说明”
Snip20190619_24

2、从“作业管理”中每个作业的运行结果状态显示栏入口。如下图:

注意:请先阅读上图的“UI访问说明”
Snip20190619_27

Yarn UI功能介绍

进入YarnUI后可以看到如下的界面:
Snip20190621_30
界面主要分三个区域。区域1:导航栏;区域2:集群的统计信息;区域3:Spark任务的运行状态区域。
下面分别介绍这3个区域。

区域1:导航栏,点击不同的链接右边的区域会刷新。

这里主要介绍“Applications”。
Applications:所有提交的Spark任务列表。例如通过“作业管理”、“工作流”、“交互式查询”提交的任务都会在这里显示。
Applications-RUNNING:正在运行的Spark任务。点击后会显示任务列表中“State”是“RUNNING”的任务列表。例如下图:
Snip20190622_34
Applications-FINISHED:运行结束的Spark任务。点击后会显示任务列表中“State”是“FINISHED”的任务列表。
Applications-FAILED:运行失败的Spark任务。点击后会显示任务列表中“State”是“FAILED”的任务列表。

区域2:集群的统计信息,主要显示集群的统计信息。

_
常用信息说明如下:

名称 说明
Memory Total 集群总可用内存。
Memory Used 集群已经使用的内存。
VCores Total 集群总可用的虚拟cpu core个数。提交spark任务指定的“--driver-cores”和“--executor-cores”使用的数据就是对应这里的VCores
VCores Used 集群总已经使用的虚拟cpu core个数。
Active Nodes 可用的节点。节点是具有内存Memory和Vcores资源的单位,一个Nodes中会有若干Memory和Vcores。点击下面的数字会显示每个节点的Memory和Vcores的使用情况。
Decommissioned Nodes、Lost Nodes、Unhealthy Nodes 可能出现问题的Nodes。

下面看下点击“Active Nodes”下面的数字后展示的信息。
_
如上图,点击数字后显示如下信息:
_
如上图红色区域展示了“Active Nodes”的信息,例如节点状态、多少可用的内存、多少可用的VCores等。
常用信息说明如下:

名称 说明
Memory Used 节点已经使用的内存。
Memory Avail 节点可用的内存。如果Spark 任务一直不能起来,可以先到这里看看是否可用内存不足。
VCores Used 节点已使用的虚拟cpu core个数。提交spark任务指定的“--driver-cores”和“--executor-cores”使用的数据就是对应这里的VCores
VCores Avail 节点可用的Vcores。如果Spark 任务一直不能起来,可以先到这里看看是否可用Vcores不足。

区域3:Spark任务的运行状态区域,显示每个Spark任务的运行信息,例如,开始时间、结束时间、状态等信息。

_
常用信息说明如下:

名称 说明
ID 每个Spark任务都会有一个唯一标识的ID。
Name 提交Spark任务的名称。对应控制台提交命令中的“--name” 信息。
State Spark任务运行的状态,例如RUNNING/FINISHED/FAILED/SUCCEEDED等。
Tracking UI Spark UI的链接,点击ApplicationMaster可以进入Spark UI。注意:只有State为RUNING的Spark任务才能进入Spark UI。

Spark UI 介绍

Spark UI入口

Spark UI入口有两个。

1、从Yarn UI进入。

如下图,进入Yarn UI后点击“RUNNING” 查看Spark任务列表。
注意:只有State为RUNING的Spark任务才能进入Spark UI。
Snip20190622_38

2、从“作业管理”中每个作业的运行结果状态显示栏入口。如下图:

Snip20190619_27

Spark UI功能介绍

下图是Spark UI的首页,分两个区域。导航栏和信息显示栏。
Snip20190622_39

导航栏

导航栏常用信息说明:

名称 说明
Jobs 显示所有的Spark 任务的Job运行状态。
Stages 显示所有的Spark 任务的Job的Stages运行状态。
Environment Spark集群的配置信息。
Executors Spark集群的Executors状态信息。
Streaming Spark集群的Streming任务的统计信息。
SQL Spark集群的SQL运行状态信息。

下面分别介绍每个导航栏的用途。

Jobs

Jobs页面如下:
Snip20190622_40
常用信息说明:

名称 说明
Active Jobs 正在运行的Job。
Completed Jobs 已经运行结束的Job。
Duration Job运行的时间,可以查看下Job运行的性能。
Submitted Job提交的时间。
Stages: Succeeded/Total 此job对应的所有Stages的总数和运行成功的个数。
Tasks (for all stages): Succeeded/Total 此job对应的所有的stages的task总数和运行的成功的个数。“1 running”表示有1个task正在运行,正在运行的task个数表示job运行并行度,一般情况下提高task的运行个数可提高Job的执行性能。

Stages

Stages页面如下:
Snip20190622_41
Stages 页面的是展示Job的所有Stages信息的页面,Stages的详细信息比Jobs多出几个常用的信息如下,这几个信息常可用来分析Spark 任务的性能。

名称 说明
Input Stage输入的数据量。
Output Stage输出的数据量。
Shuffle Read Stage Shuffle 输入的数据量。
Shuffle Write Stage Shuffle 输出的数据量。

另外点击Stage的“Description”可以进入Stage的tasks运行明细,下图是Stage的task运行明细:
Snip20190622_42
Tasks运行明细是在调试程序、分析任务性能的常用信息。这里可以看到每个task的运行时间、GC多少、运行状态等信息。
常用信息说明:

名称 说明
Duration Task的执行时间,用于评估task的性能。
GC Time Task的GC时间。如果GC时间过长,会影响task的运行性能,这时可以增加Executor的内存:在提交命令中增加--executor-memory的值,或者减少task的并行度:在提交命令中减少--executor-cores的值
Errors Task的错误信息。如果task执行失败,部分的错误信息会显示在这里。全部的错误信息要点击“Host”一栏中的“stderr”日志。

Environment

Environment主要展示Runtime Information、Spark Properties、System Properties、Classpath Entries。这里不做详细介绍。

Executors

Executors页面如下:
Snip20190622_44

常用信息说明:

名称 说明
Summary 显示Executor的总体运行状态。Active、Dead的个数
Logs Driver日志 和 Executor 日志的入口,点击可以查看对应的stdout和stderr日志。stdout:代码中使用print命令打出的信息会显示在这个日志中。stderr:系统产出的日志信息会显示在这个日志中。

Streaming

Streaming页面如下主要分两块:
Streaming Statistics:统计Streming的数据输入量、Streming的处理时间和时延。如下图:
Snip20190622_45
Streming每个批次的运行状况,便于分析每个批次的性能。如下图:
Snip20190622_46
常用信息说明:

名称 说明
Batch Time 批次产生的时间。
Records 批次获取到的数据量。
Scheduling Delay 批次开始处理的时延。
Processing Time 批次处理的时间。
Total Delay 批次处理完毕的总时延。
Records 批次获取到的数据量。

SQL

SQL 页面主要显示每个SQL任务信息,主要可以用于SQL的执行计划的查看。例如点击SQL页面的“Description”信息可以看到对应SQL的执行计划。如下图:
Snip20190622_47
其它的这里不做详细介绍。

小结

本文只对Yarn UI和Spark UI的进行简单的介绍,其它更详细信息可以参考: 社区资料
X-Pack Spark平台使用可参考:X-Pack Spark

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
82 0
|
3月前
|
机器学习/深度学习 SQL 分布式计算
Apache Spark 的基本概念和在大数据分析中的应用
介绍 Apache Spark 的基本概念和在大数据分析中的应用
157 0
|
3月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
79 0
|
3月前
|
缓存 固态存储 关系型数据库
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
|
3月前
|
机器学习/深度学习 SQL 分布式计算
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
介绍 Apache Spark 的基本概念和在大数据分析中的应用。
|
4月前
|
SQL 分布式计算 HIVE
Spark数据倾斜问题分析和解决
Spark数据倾斜问题分析和解决
43 0
|
2天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
2天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
32 0
|
14天前
|
SQL 存储 监控
日志问题精要:分析与总结
该文档讲述了应用系统日志记录的重要性和规则。主要目的是记录操作轨迹、监控系统状态和回溯故障。日志记录点包括系统入口、调用其他模块、调用结束、出口和出错时。内容应遵循UTF-8编码,避免敏感信息,按INFO级别记录,及时、完整且安全。日志输出要控制频率和长度,不影响系统性能,并按策略备份和清理。日志等级分为DEBUG、INFO、WARN、ERROR和FATAL。日志文件应有明确目录结构,大小有限制,并定期清理。注意事项包括输出异常堆栈、避免打印对象实例的hashCode、选择合适的日志框架和格式,并支持动态修改日志级别。还要实现链路追踪,确保在多线程环境中正确记录日志。
16 0
|
1月前
|
SQL 资源调度 Oracle
Flink CDC产品常见问题之sql运行中查看日志任务失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。