哪里可以找到Spark的执行者抛出的异常

时间:2016-04-29 01:04:24

标签: apache-spark pyspark

我们一直在获取ExecutorLostExceptions,但无法确定根本原因。

这是一个可以创建错误的简化脚本

filenames = "hdfs://myfile1,hdfs://myfile2"
sc.textFile(filenames).first()

作为一项实验,当我故意在仅1mb spark.executor.memory的1GB数据上运行spark作业时,驱动程序会输出以下错误消息

16/04/28 17:28:54 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, 
host.addr, partition 0,ANY, 2257 bytes)
16/04/28 17:29:28 INFO MesosSchedulerBackend: Executor lost: 4e199be7-a0bc-407d-ba70-4147e08d6c39-S5, marking slave 4e199be7-a0bc-407d-ba70-4147e08d6c39-S5 as lost
16/04/28 17:29:28 INFO MesosSchedulerBackend: Mesos slave lost: 4e199be7-a0bc-407d-ba70-4147e08d6c39-S5
16/04/28 17:29:28 ERROR TaskSchedulerImpl: Lost executor 4e199be7-a0bc-407d-ba70-4147e08d6c39-S5 on host.addr: Unknown executor exit code (256) (died from signal 128?)
16/04/28 17:29:28 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, host.addr): ExecutorLostFailure (executor 4e199be7-a0bc-407d-ba70-4147e08d6c39-S5 exited caused by one of the running tasks) Reason: Unknown executor exit code (256) (died from signal 128?)

并在几次自动重试后,整个作业失败。这种情况发生在Pyspark和Scala-spark。

我可以查看哪些适当的日志来确定此执行程序失败的确切原因?

对于这种受控案例,我知道内存耗尽是原因。然而,这些和其他具有不同退出代码的故障会定期发生,然后我就不知道在哪里寻找或修复什么。

到目前为止我看过的地方包括

  1. 在端口4040上运行的spark UI
  2. /tmp/mesos/slaves/[slaveid]/frameworks/[frameworkid]/executors/[executorid]/runs/latest/{stderr,stdout}在执行者为"丢失"
  3. 的节点上 失败节点上的
  4. /var/logs/mesos/mesos-slaves.{INFO,WARN,ERROR,FATAL}
  5. 驱动程序节点上的
  6. /tmp/spark-events/[executorid]
  7. 这些地方有助于解决一些问题,但不是OOM错误,现在我不确定在哪里看。

0 个答案:

没有答案