【发布时间】: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