Web UI中执行程序的RUNNING和LOADING状态有什么区别?

时间:2016-02-17 23:35:38

标签: apache-spark spark-streaming

我们目前正在使用Spark 1.5.2 ,并且拥有一个包含三个节点(1个主节点,2个工作节点)的独立群集,我们正在群集上运行流式传输作业。流媒体作业本身没有问题,我们通过日志和性能指标(如查看CPU使用情况,磁盘使用情况,内存使用情况)验证了两个工作人员的使用情况。

我们的流媒体作业目前从Cassandra集群中读取并将该信息存储到Elasticsearch。另外需要注意的是,流媒体作业只有一个接收者,这意味着只有一个工作人员会从Cassandra中读取(但是工作人员都会写入Elasticsearch)。

当我们从Spark Web UI进入应用程序视图(通过单击主节点中正在运行的应用程序表中列出的流作业应用程序ID)时,会出现一个Executor Summary表,其中有几列显示了worker,核心,内存,状态和日志。

对于我们的流媒体工作,它通常如下所示:

enter image description here

请注意,此处显示的状态均为 RUNNING

当我们重新启动流式传输作业时,其中一个工作人员的某个状态有时处于 LOADING 状态,如下所示:

enter image description here

一旦显示处于LOADING状态,它将保持状态(即最终不会变为运行状态)。

所以问题是Spark Web UI中显示的RUNNING和LOADING状态之间有什么区别?

就功能而言,两个流媒体作业似乎都按照我们的预期行事。换句话说,无论状态如何,Spark工作人员似乎都在做工作,似乎没有任何明显的问题(无论如何都不在日志中)。

2 个答案:

答案 0 :(得分:1)

LOADING Executor即将开通RUNNING,但尚未向Master注册,因此它还没有准备好做有用的工作。

答案 1 :(得分:1)

在考虑了潜在的情况后,我无法找到一个,但我认为解决问题的唯一方法就是当你以某种方式从遗嘱执行人那里丢失一些更新时。

由于Web UI只是一个SparkListener,它从基础架构接收更新并以可见的方式显示,您可以使用浏览器访问它,因此并不重要。它是否已收到所有事件并不会阻止基础设施(如执行程序)正常工作,而且似乎没有。

但是,这可能很烦人,如果可以重现,我会提出问题,因为它会降低用于监控的Web UI点。

P.S。您可以注册自己的SparkListener并执行" Web UI"你自己。如果您这样做,您可以看到发生的事件并与真实的Web UI进行比较。