2

我正在尝试了解 Spark History 服务器组件。我知道,历史服务器显示已完成的 Spark 应用程序。

尽管如此,对于已完成的 Spark 应用程序,我看到“活动作业”设置为 1。我试图了解“工作”部分中的“活动工作”是什么意思。此外,应用程序在 30 分钟内完成,但是当我在 8 小时后打开历史服务器时,“持续时间”显示 8.0h。请看截图。

在此处输入图像描述

你能帮我理解上图中的“活动工作”、“持续时间”和“阶段:成功/总计”项目吗?

4

2 回答 2

2

最后经过一番研究,找到了我的问题的答案。

Spark 应用程序由一个驱动程序和一个或多个执行程序组成。驱动程序实例化 SparkContext,它协调执行程序以运行 Spark 应用程序。此信息显示在 Spark History Server Web UI 的“ Active Jobs ”部分。

执行器运行由驱动程序分配的任务。

当 Spark 应用程序在 YARN 上运行时,它有自己的 YARN 客户端和 YARN 应用程序主控实现。YARN 应用程序有一个纱线客户端、纱线应用程序主机和运行在节点管理器上的容器列表。

在我的例子中,Yarn 以独立模式运行,因此驱动程序作为 yarn 应用程序主线程的线程运行。Yarn 客户端从应用程序主机中提取状态,应用程序主机协调容器以运行任务。

此运行作业可以在 Cloudera Manager 管理控制台的 YARN 应用程序页面中进行监控,同时它正在运行

如果申请成功,那么历史服务器将显示“已完成作业”列表,并且“活动作业”部分将被删除

如果应用程序在容器级别失败并且 YARN 将此信息传达给驱动程序,那么历史服务器将显示“失败的作业”列表,并且“活动作业”部分将被删除

尽管如此,如果应用程序在容器级别失败并且 YARN 无法将其传达给驱动程序,那么驱动程序实例化的作业将进入遗忘状态。它认为作业仍在运行,并一直等待从 YARN 应用程序大师那里听到作业状态。因此,在 History Server 中,它仍然在“ Active Jobs ”中显示为running

所以我的收获是: 要检查正在运行的作业的状态,请转到 Cloudera Manager 管理控制台中的 YARN 应用程序页面或使用 YARN CLI 命令。作业完成/失败后,打开 Spark History Server 以获取有关资源使用情况、DAG 和执行时间线信息的更多详细信息。

于 2018-09-04T03:39:32.000 回答
0

在 Spark 应用程序中调用一个动作(在你的情况下计数是动作)会触发一个作业的启动来完成它。Spark 检查该操作所依赖的数据集并制定执行计划。执行计划将数据集转换组装成阶段。

阶段是执行计划的物理单元。简而言之,Stage 是一组并行任务,即每个分区一个任务。基本上,每个被分成更小的任务集的工作就是一个阶段。虽然,这完全取决于彼此。但是,它与 MapReduce 中的 map 和 reduce 阶段有些相同。

每种 Spark Stages 的详细信息:

一个。Spark 中的 ShuffleMapStage ShuffleMapStage 被认为是 DAG 物理执行中的中间 Spark 阶段。基本上,它为另一个阶段生成数据。考虑 Spark 中的 ShuffleMapStage 作为阶段 DAG 中其他后续 Spark 阶段的输入。但是,在 ShuffleMapStage 中可能存在 n 个多个管道操作。像地图和过滤器,在洗牌操作之前。此外,我们可以在不同的作业之间共享单个 ShuffleMapStage。

湾。Spark 中的ResultStage 通过在spark RDD 上运行一个函数,在用户程序中执行Spark 动作的Stage 是一个ResultStage。它被认为是spark 中的最后一个阶段。ResultStage 意味着作为作业的最后阶段,它在 Spark 中的目标 RDD 的一个或多个分区上应用函数,有助于计算操作的结果。

回到历史服务器上活跃工作的问题,官方文档中列出了一些注释作为历史服务器。还有关于同一链接的 jira [SPARK-7889]问题。有关更多详细信息,请点击链接 source-1

于 2018-09-01T08:12:22.660 回答