【问题标题】:SPARK standalone cluster: Executors exit, how to track the source of the error?SPARK 独立集群:Executors 退​​出,如何追踪错误来源?
【发布时间】:2016-12-16 07:11:01
【问题描述】:

我在一台 250GB 或内存和 40 个内核以及数 TB 或硬盘空间的机器上运行独立集群。

我正在初始化一个由 8 个执行程序组成的集群,每个执行程序有 5 个内核和 28GB 内存。

我正在读取数据,我的持久化策略是 MEMORY_AND_DISK。

我正在读取 parquet 文件,对其进行处理并生成一个 DataFrame,然后将其传递给管道以提取特征并训练一个随机森林分类器。

在生成 DataFrame 时,我失去了执行者,但我无法找出原因。

我看到如下错误:

16/12/15 11:07:30 ERROR TaskSchedulerImpl: Lost executor 3 on XXXX: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
16/12/15 11:07:30 WARN TaskSetManager: Lost task 172.0 in stage 171.0 (TID 7757, XXXX): ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.

我在 Spark UI 上查看了执行程序的 stderr 日志,但我什么也没发现(启用了 INFO 日志记录级别),只有 INFO 消息没有任何 WARN 或 ERROR。

我监控执行器上的可用内存(再次使用 Spark UI),在执行器退出之前仍有可用内存,并且有足够的磁盘空间可用。

  • 如何跟踪此问题?
  • 执行人退出的原因是什么?

【问题讨论】:

  • 您必须记录您的应用程序并监控内存和网络。您可以将 jvisualvm 之类的工具用于独立集群。您还可以增加 sparks 日志详细级别。

标签: apache-spark


【解决方案1】:

如果您有 8 个执行器,每个执行器指定 28g 内存,那么您只有 26g 用于其他所有东西,不同的开销很快就会加起来,完全有可能这太少了,执行器会因为占用内存而被杀死。

尝试使用每个执行器 20g 之类的东西,或者只是一般地使用这些值。你还在失去执行者吗?

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多