概述
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集群跑任务。过程如下图所示:
关于Yarn的官网资料可参考:Apache Hadoop Yarn。
X-Pack Spark 作业管理链接介绍
X-Pack Spark提供了作业管理,可以提交Spark任务(后台逻辑是提交到Yarn,Yarn再调度Spark集群)。任务运行的状态有如下几个链接:
如上图有四个链接:日志,Spark UI,Yarn UI,详情,停止。
- 日志
这里的日志点进去是控制台提交任务的日志,对应后台Livy的日志。主要显示Livy 与 Spark交换的日志。 - Spark UI
Spark UI是Spark job 运行的详细信息,下面会详细介绍。 - Yarn UI
Yarn UI 点击进去是Yarn的管理界面,下面会详细介绍。 - 详情
任务提交的参数详情 - 停止
点击可以停止此次任务。
常用的就是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访问说明”
2、从“作业管理”中每个作业的运行结果状态显示栏入口。如下图:
注意:请先阅读上图的“UI访问说明”
Yarn UI功能介绍
进入YarnUI后可以看到如下的界面:
界面主要分三个区域。区域1:导航栏;区域2:集群的统计信息;区域3:Spark任务的运行状态区域。
下面分别介绍这3个区域。
区域1:导航栏,点击不同的链接右边的区域会刷新。
这里主要介绍“Applications”。
Applications:所有提交的Spark任务列表。例如通过“作业管理”、“工作流”、“交互式查询”提交的任务都会在这里显示。
Applications-RUNNING:正在运行的Spark任务。点击后会显示任务列表中“State”是“RUNNING”的任务列表。例如下图:
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。
2、从“作业管理”中每个作业的运行结果状态显示栏入口。如下图:
Spark UI功能介绍
下图是Spark UI的首页,分两个区域。导航栏和信息显示栏。
导航栏
导航栏常用信息说明:
名称 | 说明 |
---|---|
Jobs | 显示所有的Spark 任务的Job运行状态。 |
Stages | 显示所有的Spark 任务的Job的Stages运行状态。 |
Environment | Spark集群的配置信息。 |
Executors | Spark集群的Executors状态信息。 |
Streaming | Spark集群的Streming任务的统计信息。 |
SQL | Spark集群的SQL运行状态信息。 |
下面分别介绍每个导航栏的用途。
Jobs
Jobs页面如下:
常用信息说明:
名称 | 说明 |
---|---|
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页面如下:
:
Stages 页面的是展示Job的所有Stages信息的页面,Stages的详细信息比Jobs多出几个常用的信息如下,这几个信息常可用来分析Spark 任务的性能。
名称 | 说明 |
---|---|
Input | Stage输入的数据量。 |
Output | Stage输出的数据量。 |
Shuffle Read | Stage Shuffle 输入的数据量。 |
Shuffle Write | Stage Shuffle 输出的数据量。 |
另外点击Stage的“Description”可以进入Stage的tasks运行明细,下图是Stage的task运行明细:
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页面如下:
常用信息说明:
名称 | 说明 |
---|---|
Summary | 显示Executor的总体运行状态。Active、Dead的个数 |
Logs | Driver日志 和 Executor 日志的入口,点击可以查看对应的stdout和stderr日志。stdout:代码中使用print命令打出的信息会显示在这个日志中。stderr:系统产出的日志信息会显示在这个日志中。 |
Streaming
Streaming页面如下主要分两块:
Streaming Statistics:统计Streming的数据输入量、Streming的处理时间和时延。如下图:
Streming每个批次的运行状况,便于分析每个批次的性能。如下图:
常用信息说明:
名称 | 说明 |
---|---|
Batch Time | 批次产生的时间。 |
Records | 批次获取到的数据量。 |
Scheduling Delay | 批次开始处理的时延。 |
Processing Time | 批次处理的时间。 |
Total Delay | 批次处理完毕的总时延。 |
Records | 批次获取到的数据量。 |
SQL
SQL 页面主要显示每个SQL任务信息,主要可以用于SQL的执行计划的查看。例如点击SQL页面的“Description”信息可以看到对应SQL的执行计划。如下图:
其它的这里不做详细介绍。
小结
本文只对Yarn UI和Spark UI的进行简单的介绍,其它更详细信息可以参考: 社区资料。
X-Pack Spark平台使用可参考:X-Pack Spark。