【问题标题】:What is the difference between RUNNING and LOADING states for executors in web UI?Web UI 中执行程序的 RUNNING 和 LOADING 状态有什么区别?
【发布时间】:2016-02-17 23:35:37
【问题描述】:

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

我们的流式传输作业当前从 Cassandra 集群读取数据并将该信息存储到 Elasticsearch。需要注意的另一件事是,流式作业只有一个接收器,这意味着只有一个工作人员将从 Cassandra 读取数据(但两个工作人员都将写入 Elasticsearch)。

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

对于我们的流式作业,它通常如下所示:

注意这里显示的状态都是RUNNING

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

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

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

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

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    一个 LOADING Executor 正在运行,但还没有注册到 Master,所以它还没有准备好做有用的工作。

    【讨论】:

    • 当我试图用谷歌搜索答案时,我确实看到了这一点,但对于我们的案例,它永远不会运行。如果从 UI 显示执行器处于加载状态,则它保持在加载状态。
    • 是的。我还将日志记录级别配置为跟踪以进行调试。状态运行时的日志与状态加载时的日志几乎相同。
    【解决方案2】:

    在考虑了很多可能的情况后,我无法找出一个,但我认为解决这个问题的唯一方法是当你不知何故丢失了执行者的一些更新。

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

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

    附言你可以注册自己的 SparkListener 并自己做一个“web UI”。如果这样做,您可以看到传入的事件并与真实的 Web UI 进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2018-08-11
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多